{"product_id":"godiag-ecu-gpt-boot-ad-bench-boot-adapter","title":"GODIAG ECU GPT Boot AD - ECU Bench \u0026 Boot Adapter for Reading\/Writing Without Disassembly - J2534 OEM Software \u0026 Tunning Tool Compatible","description":"\u003c!-- ============================================================\n     GODIAG ECU GPT Boot AD - ENGLISH product description  (v2)\n     Paste into Shopify product description (Show HTML \/ code view)\n     - All CSS scoped to .gpb-root.gpb-root (double class = high specificity)\n     - No IDs anywhere (Shopify dual-render safe)\n     - Floating nav is built by JS and attached to \u003cbody\u003e, sits UNDER the\n       theme header, follows the page, drag-scrolls and auto-centres.\n     ============================================================ --\u003e\n\n\u003cdiv class=\"gpb-root\" data-role=\"gpb-root\"\u003e\n\n\u003cstyle\u003e\n\/* ===========================================================\n   1. HARD RESET - neutralises theme + accessibility-widget CSS\n   =========================================================== *\/\n.gpb-root.gpb-root,\n.gpb-root.gpb-root div,\n.gpb-root.gpb-root section,\n.gpb-root.gpb-root h1,\n.gpb-root.gpb-root h2,\n.gpb-root.gpb-root h3,\n.gpb-root.gpb-root h4,\n.gpb-root.gpb-root p,\n.gpb-root.gpb-root ul,\n.gpb-root.gpb-root li,\n.gpb-root.gpb-root span,\n.gpb-root.gpb-root small,\n.gpb-root.gpb-root b,\n.gpb-root.gpb-root strong,\n.gpb-root.gpb-root i,\n.gpb-root.gpb-root button,\n.gpb-root.gpb-root table,\n.gpb-root.gpb-root thead,\n.gpb-root.gpb-root tbody,\n.gpb-root.gpb-root tr,\n.gpb-root.gpb-root th,\n.gpb-root.gpb-root td{\n  font-family:\"Inter\",\"Segoe UI\",system-ui,-apple-system,Arial,sans-serif !important;\n  color:inherit !important;\n  background:none !important;\n  background-color:transparent !important;\n  border:0 !important;\n  border-radius:0 !important;\n  margin:0 !important;\n  padding:0 !important;\n  text-transform:none !important;\n  letter-spacing:normal !important;\n  text-decoration:none !important;\n  text-shadow:none !important;\n  box-shadow:none !important;\n  float:none !important;\n  font-style:normal !important;\n  min-width:0 !important;\n  max-width:none !important;\n  text-indent:0 !important;\n  list-style:none !important;\n  opacity:1;\n}\n\n\/* ===========================================================\n   2. ROOT\n   =========================================================== *\/\n.gpb-root.gpb-root{\n  --gpb-bg:#0d1117;\n  --gpb-bg2:#111823;\n  --gpb-panel:#151d28;\n  --gpb-panel2:#1b2431;\n  --gpb-line:#25313f;\n  --gpb-orange:#ff7a1a;\n  --gpb-teal:#28c4b8;\n  --gpb-text:#e8eef5;\n  --gpb-muted:#93a4b7;\n  --gpb-radius:14px;\n\n  display:block !important;\n  direction:ltr !important;\n  text-align:left !important;\n  background-color:#0d1117 !important;\n  color:#e8eef5 !important;\n  font-size:16px !important;\n  line-height:1.65 !important;\n  font-weight:400 !important;\n  border-radius:18px !important;\n  box-sizing:border-box;\n  max-width:1180px !important;\n  margin:0 auto !important;\n  isolation:isolate;\n  \/* NOTE: no overflow:hidden here - it breaks sticky\/fixed descendants *\/\n}\n.gpb-root.gpb-root *,\n.gpb-root.gpb-root *::before,\n.gpb-root.gpb-root *::after{box-sizing:border-box;}\n\n.gpb-root.gpb-root p{margin:0 0 14px !important;line-height:1.7 !important;}\n.gpb-root.gpb-root h2,\n.gpb-root.gpb-root h3,\n.gpb-root.gpb-root h4{line-height:1.22 !important;font-weight:800 !important;margin:0 0 12px !important;}\n.gpb-root.gpb-root ul{margin:0 0 14px !important;padding-left:20px !important;list-style:disc !important;}\n.gpb-root.gpb-root li{margin:0 0 8px !important;display:list-item !important;}\n.gpb-root.gpb-root b,\n.gpb-root.gpb-root strong{font-weight:800 !important;color:#e8eef5 !important;}\n.gpb-root.gpb-root img{max-width:100% !important;height:auto !important;display:block !important;}\n.gpb-root.gpb-root button{cursor:pointer;font:inherit;}\n\n.gpb-root.gpb-root .gpb-ltr{direction:ltr !important;unicode-bidi:isolate;display:inline-block;}\n\n\/* ===========================================================\n   3. LAYOUT\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-sec{padding:56px 26px !important;border-top:1px solid #25313f !important;}\n.gpb-root.gpb-root .gpb-hero{border-radius:18px 18px 0 0 !important;}\n.gpb-root.gpb-root .gpb-close{border-radius:0 0 18px 18px !important;}\n.gpb-root.gpb-root .gpb-wrap{max-width:1040px !important;margin:0 auto !important;}\n\n.gpb-root.gpb-root .gpb-eyebrow{\n  display:inline-block;font-size:11px !important;font-weight:800 !important;\n  letter-spacing:.18em !important;text-transform:uppercase !important;\n  color:#ff7a1a !important;margin:0 0 12px !important;padding:5px 11px !important;\n  border:1px solid rgba(255,122,26,.35) !important;border-radius:999px !important;\n  background-color:rgba(255,122,26,.07) !important;line-height:1.5 !important;\n}\n.gpb-root.gpb-root .gpb-h2{font-size:clamp(23px,3.4vw,34px) !important;color:#e8eef5 !important;}\n.gpb-root.gpb-root .gpb-lead{color:#93a4b7 !important;font-size:17px !important;max-width:760px !important;}\n\n\/* ===========================================================\n   4. IN-FLOW TABLE OF CONTENTS\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-toc{\n  background-color:#111823 !important;border-bottom:1px solid #25313f !important;\n  border-radius:18px 18px 0 0 !important;\n}\n.gpb-root.gpb-root .gpb-toc-in{\n  display:flex;gap:6px;overflow-x:auto;padding:11px 16px !important;\n  scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;cursor:grab;\n}\n.gpb-root.gpb-root .gpb-toc-in::-webkit-scrollbar{display:none;}\n.gpb-root.gpb-root .gpb-toc-in.is-drag{cursor:grabbing;}\n.gpb-root.gpb-root .gpb-toc-in button{\n  flex:0 0 auto;background-color:transparent !important;border:1px solid transparent !important;\n  color:#93a4b7 !important;font-size:13px !important;font-weight:700 !important;\n  padding:7px 13px !important;border-radius:999px !important;white-space:nowrap;\n  transition:.2s;line-height:1.4 !important;\n}\n.gpb-root.gpb-root .gpb-toc-in button:hover{color:#e8eef5 !important;background-color:#151d28 !important;}\n.gpb-root.gpb-root .gpb-toc-in button.is-on{\n  color:#0d1117 !important;background-color:#ff7a1a !important;border-color:#ff7a1a !important;\n}\n\n\/* ===========================================================\n   5. FLOATING NAV  (JS moves a copy of this to \u003cbody\u003e)\n   =========================================================== *\/\n.gpb-fixednav.gpb-fixednav{\n  position:fixed !important;left:0 !important;right:auto !important;width:100% !important;\n  background-color:rgba(13,17,23,.97) !important;\n  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);\n  border:1px solid #25313f !important;border-top:0 !important;\n  border-radius:0 0 14px 14px !important;\n  box-shadow:0 10px 26px rgba(0,0,0,.45) !important;\n  opacity:0;visibility:hidden;transform:translateY(-8px);\n  transition:opacity .22s ease,transform .22s ease,visibility .22s;\n  pointer-events:none;\n}\n.gpb-fixednav.gpb-fixednav.is-visible{opacity:1;visibility:visible;transform:none;pointer-events:auto;}\n.gpb-fixednav.gpb-fixednav .gpb-fn-in{\n  display:flex;gap:6px;overflow-x:auto;padding:10px 14px;margin:0;\n  scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;cursor:grab;\n}\n.gpb-fixednav.gpb-fixednav .gpb-fn-in::-webkit-scrollbar{display:none;}\n.gpb-fixednav.gpb-fixednav .gpb-fn-in.is-drag{cursor:grabbing;}\n.gpb-fixednav.gpb-fixednav button{\n  flex:0 0 auto;background-color:transparent;border:1px solid transparent;color:#93a4b7;\n  font-family:\"Inter\",\"Segoe UI\",system-ui,-apple-system,Arial,sans-serif;\n  font-size:13px;font-weight:700;padding:7px 13px;border-radius:999px;cursor:pointer;\n  white-space:nowrap;transition:.2s;line-height:1.4;margin:0;\n}\n.gpb-fixednav.gpb-fixednav button:hover{color:#e8eef5;background-color:#151d28;}\n.gpb-fixednav.gpb-fixednav button.is-on{color:#0d1117;background-color:#ff7a1a;border-color:#ff7a1a;}\n.gpb-fixednav.gpb-rtl{direction:rtl;}\n\n\/* ===========================================================\n   6. HERO\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-hero{\n  position:relative;padding:58px 26px 52px !important;\n  background-image:\n    radial-gradient(760px 380px at 82% 8%,rgba(255,122,26,.16),transparent 62%),\n    radial-gradient(620px 360px at 8% 92%,rgba(40,196,184,.13),transparent 60%),\n    linear-gradient(180deg,#0f151d 0%,#0d1117 100%) !important;\n  background-color:#0d1117 !important;\n}\n.gpb-root.gpb-root .gpb-hero-grid{\n  display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center;\n  max-width:1040px !important;margin:0 auto !important;\n}\n.gpb-root.gpb-root .gpb-h1{\n  font-size:clamp(28px,5vw,46px) !important;font-weight:900 !important;\n  letter-spacing:-.03em !important;line-height:1.06 !important;margin:0 0 14px !important;\n  color:#e8eef5 !important;\n}\n\/* solid colour first so the text can NEVER be invisible, gradient only if supported *\/\n.gpb-root.gpb-root .gpb-h1 .gpb-accent{\n  color:#ff9a4d !important;\n  -webkit-text-fill-color:#ff9a4d !important;\n  background-image:none !important;\n}\n@supports ((-webkit-background-clip:text) or (background-clip:text)){\n  .gpb-root.gpb-root .gpb-h1 .gpb-accent{\n    background-image:linear-gradient(100deg,#ff7a1a,#ffb066) !important;\n    -webkit-background-clip:text !important;\n    background-clip:text !important;\n    color:transparent !important;\n    -webkit-text-fill-color:transparent !important;\n  }\n}\n.gpb-root.gpb-root .gpb-sub{font-size:17px !important;color:#93a4b7 !important;max-width:540px !important;margin:0 0 22px !important;}\n.gpb-root.gpb-root .gpb-modechips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px !important;}\n.gpb-root.gpb-root .gpb-chip{\n  font-size:12px !important;font-weight:800 !important;letter-spacing:.06em !important;\n  padding:7px 12px !important;border-radius:8px !important;border:1px solid #25313f !important;\n  background-color:#151d28 !important;color:#e8eef5 !important;\n}\n.gpb-root.gpb-root .gpb-chip b{color:#28c4b8 !important;}\n.gpb-root.gpb-root .gpb-hero-points{display:grid;gap:10px;margin:0 !important;padding:0 !important;list-style:none !important;}\n.gpb-root.gpb-root .gpb-hero-points li{\n  display:flex !important;gap:10px;align-items:flex-start;font-size:15px !important;\n  color:#cfdae6 !important;margin:0 !important;\n}\n.gpb-root.gpb-root .gpb-tick{\n  flex:0 0 auto;width:19px;height:19px;border-radius:5px !important;margin-top:3px !important;\n  background-color:rgba(40,196,184,.15) !important;border:1px solid rgba(40,196,184,.5) !important;position:relative;\n}\n.gpb-root.gpb-root .gpb-tick::after{\n  content:\"\";position:absolute;left:6px;top:2px;width:4px;height:9px;\n  border:solid #28c4b8;border-width:0 2px 2px 0;transform:rotate(42deg);\n}\n\n\/* device art *\/\n.gpb-root.gpb-root .gpb-devwrap{display:flex;justify-content:center;}\n.gpb-root.gpb-root .gpb-dev{\n  direction:ltr !important;width:100%;max-width:300px !important;position:relative;\n  filter:drop-shadow(0 24px 40px rgba(0,0,0,.6));\n}\n.gpb-root.gpb-root .gpb-dev-body{\n  background-image:linear-gradient(160deg,#2c333c 0%,#1a1f26 55%,#131820 100%) !important;\n  border:1px solid #3b444f !important;border-radius:16px !important;\n  padding:18px 16px 14px !important;position:relative;text-align:left !important;\n}\n.gpb-root.gpb-root .gpb-dev-brand{font-weight:900 !important;letter-spacing:.06em !important;font-size:15px !important;color:#e9eef4 !important;margin:0 0 12px !important;}\n.gpb-root.gpb-root .gpb-dev-brand span{color:#ff7a1a !important;}\n.gpb-root.gpb-root .gpb-dev-panel{background-color:#f2d03a !important;border-radius:9px !important;height:52px;margin:0 0 14px !important;position:relative;overflow:hidden;}\n.gpb-root.gpb-root .gpb-dev-panel::after{content:\"\";position:absolute;inset:9px;border:2px dashed rgba(0,0,0,.35);border-radius:22px 40px 8px 8px;}\n.gpb-root.gpb-root .gpb-dev-leds{display:grid;gap:7px;margin:0 0 14px !important;}\n.gpb-root.gpb-root .gpb-dev-leds div{display:flex;align-items:center;gap:9px;font-size:10px !important;font-weight:800 !important;letter-spacing:.1em !important;color:#b9c4d0 !important;}\n.gpb-root.gpb-root .gpb-led{width:9px;height:9px;border-radius:50% !important;background-color:#4a5561 !important;flex:0 0 auto;}\n.gpb-root.gpb-root .gpb-led.on{animation:gpbLed 2.6s infinite;}\n.gpb-root.gpb-root .gpb-led.l1.on{background-color:#ff5a3c !important;box-shadow:0 0 9px #ff5a3c !important;animation-delay:0s;}\n.gpb-root.gpb-root .gpb-led.l2.on{background-color:#ffc93c !important;box-shadow:0 0 9px #ffc93c !important;animation-delay:.35s;}\n.gpb-root.gpb-root .gpb-led.l3.on{background-color:#28c4b8 !important;box-shadow:0 0 9px #28c4b8 !important;animation-delay:.7s;}\n@keyframes gpbLed{0%,72%{opacity:1}80%,100%{opacity:.28}}\n.gpb-root.gpb-root .gpb-dev-btns{display:flex;gap:14px;align-items:center;}\n.gpb-root.gpb-root .gpb-btn-m{width:26px;height:26px;border-radius:50% !important;background-image:radial-gradient(circle at 34% 30%,#f3f6f9,#8d97a3) !important;border:1px solid #6b7480 !important;}\n.gpb-root.gpb-root .gpb-btn-r{width:22px;height:22px;border-radius:50% !important;background-image:radial-gradient(circle at 34% 30%,#ff6a5a,#c0271b) !important;border:1px solid #8f1e14 !important;}\n.gpb-root.gpb-root .gpb-dev-btns small{font-size:9px !important;font-weight:800 !important;letter-spacing:.1em !important;color:#8e99a6 !important;}\n.gpb-root.gpb-root .gpb-dev-name{margin-top:12px !important;font-size:11px !important;font-weight:800 !important;color:#cfd8e2 !important;}\n.gpb-root.gpb-root .gpb-dev-wires{display:flex;gap:5px;justify-content:center;margin-top:-2px;padding:0 22px !important;}\n.gpb-root.gpb-root .gpb-dev-wires i{display:block;width:5px;height:52px;border-radius:0 0 4px 4px !important;opacity:.92;}\n\n\/* ===========================================================\n   7. FLOW\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-flow{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:26px !important;}\n.gpb-root.gpb-root .gpb-node{\n  background-color:#151d28 !important;border:1px solid #25313f !important;border-radius:14px !important;\n  padding:18px 15px !important;position:relative;text-align:center !important;\n}\n.gpb-root.gpb-root .gpb-num{font-size:11px !important;font-weight:900 !important;letter-spacing:.14em !important;color:#93a4b7 !important;display:block;margin:0 0 8px !important;}\n.gpb-root.gpb-root .gpb-node h4{font-size:15px !important;margin:0 0 6px !important;color:#e8eef5 !important;}\n.gpb-root.gpb-root .gpb-node p{font-size:13px !important;color:#93a4b7 !important;margin:0 !important;line-height:1.5 !important;}\n.gpb-root.gpb-root .gpb-node.gpb-star{border-color:rgba(255,122,26,.55) !important;background-image:linear-gradient(180deg,rgba(255,122,26,.1),#151d28) !important;}\n.gpb-root.gpb-root .gpb-node.gpb-star h4{color:#ff7a1a !important;}\n.gpb-root.gpb-root .gpb-node::after{\n  content:\"\";position:absolute;top:50%;right:-13px;width:14px;height:2px;\n  background-image:repeating-linear-gradient(90deg,#ff7a1a 0 5px,transparent 5px 9px);\n}\n.gpb-root.gpb-root .gpb-node:last-child::after{display:none;}\n\n\/* ===========================================================\n   8. CARDS\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:14px;}\n.gpb-root.gpb-root .gpb-card{\n  background-color:#151d28 !important;border:1px solid #25313f !important;border-radius:14px !important;\n  padding:22px 20px !important;transition:transform .25s,border-color .25s,box-shadow .25s;\n}\n.gpb-root.gpb-root .gpb-card:hover{transform:translateY(-4px);border-color:rgba(255,122,26,.45) !important;box-shadow:0 18px 40px rgba(0,0,0,.45) !important;}\n.gpb-root.gpb-root .gpb-card h3{font-size:16px !important;margin:0 0 8px !important;color:#e8eef5 !important;}\n.gpb-root.gpb-root .gpb-card p{font-size:14px !important;color:#93a4b7 !important;margin:0 !important;line-height:1.65 !important;}\n.gpb-root.gpb-root .gpb-ico{\n  width:38px;height:38px;border-radius:10px !important;display:flex;align-items:center;justify-content:center;\n  background-color:rgba(255,122,26,.12) !important;border:1px solid rgba(255,122,26,.32) !important;\n  margin:0 0 13px !important;font-size:17px !important;font-weight:900 !important;color:#ff7a1a !important;\n}\n.gpb-root.gpb-root .gpb-card.gpb-t .gpb-ico{background-color:rgba(40,196,184,.12) !important;border-color:rgba(40,196,184,.32) !important;color:#28c4b8 !important;}\n\n\/* ===========================================================\n   9. TABS\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px !important;}\n.gpb-root.gpb-root .gpb-tab{\n  background-color:#151d28 !important;border:1px solid #25313f !important;color:#93a4b7 !important;\n  font-size:14px !important;font-weight:800 !important;padding:11px 17px !important;border-radius:10px !important;transition:.2s;\n}\n.gpb-root.gpb-root .gpb-tab:hover{color:#e8eef5 !important;border-color:#3a4757 !important;}\n.gpb-root.gpb-root .gpb-tab.is-on{background-color:#ff7a1a !important;border-color:#ff7a1a !important;color:#0d1117 !important;}\n.gpb-root.gpb-root .gpb-pane{display:none;}\n.gpb-root.gpb-root .gpb-pane.is-on{display:block;animation:gpbFade .3s ease both;}\n@keyframes gpbFade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}\n.gpb-root.gpb-root .gpb-panebox{\n  background-color:#151d28 !important;border:1px solid #25313f !important;border-radius:14px !important;\n  padding:24px 22px !important;display:grid;grid-template-columns:1.25fr .75fr;gap:26px;\n}\n.gpb-root.gpb-root .gpb-panebox h3{font-size:19px !important;margin:0 0 4px !important;color:#e8eef5 !important;}\n.gpb-root.gpb-root .gpb-tagline{font-size:13px !important;font-weight:800 !important;color:#28c4b8 !important;letter-spacing:.05em !important;margin:0 0 14px !important;}\n.gpb-root.gpb-root .gpb-panebox p{font-size:14.5px !important;color:#c3cfdb !important;}\n.gpb-root.gpb-root .gpb-when{background-color:#111823 !important;border:1px solid #25313f !important;border-radius:11px !important;padding:16px !important;}\n.gpb-root.gpb-root .gpb-when h4{font-size:12px !important;letter-spacing:.12em !important;text-transform:uppercase !important;color:#ff7a1a !important;margin:0 0 9px !important;}\n.gpb-root.gpb-root .gpb-when ul{margin:0 !important;padding-left:17px !important;}\n.gpb-root.gpb-root .gpb-when li{font-size:13.5px !important;color:#93a4b7 !important;}\n\n\/* ===========================================================\n   10. RESISTOR BOARD\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-board{display:grid;grid-template-columns:.9fr 1.1fr;gap:26px;align-items:start;}\n.gpb-root.gpb-root .gpb-pcb{background-image:linear-gradient(160deg,#12181f,#0a0e13) !important;border:1px solid #2a3542 !important;border-radius:16px !important;padding:20px !important;direction:ltr !important;}\n.gpb-root.gpb-root .gpb-pcb-title{font-size:11px !important;font-weight:900 !important;letter-spacing:.22em !important;color:#6f7d8c !important;text-align:center !important;margin:0 0 16px !important;}\n.gpb-root.gpb-root .gpb-term{display:grid;gap:7px;margin:0 0 18px !important;}\n.gpb-root.gpb-root .gpb-term div{\n  display:flex;align-items:center;gap:10px;background-color:#1c242e !important;border:1px solid #2f3b49 !important;\n  border-radius:7px !important;padding:8px 11px !important;font-size:12.5px !important;font-weight:800 !important;letter-spacing:.06em !important;color:#e8eef5 !important;\n}\n.gpb-root.gpb-root .gpb-screw{width:13px;height:13px;border-radius:3px !important;flex:0 0 auto;}\n.gpb-root.gpb-root .gpb-res{display:flex;flex-wrap:wrap;gap:6px;}\n.gpb-root.gpb-root .gpb-res span{font-size:11.5px !important;font-weight:800 !important;padding:5px 9px !important;border-radius:6px !important;background-color:rgba(40,196,184,.1) !important;border:1px solid rgba(40,196,184,.3) !important;color:#28c4b8 !important;}\n.gpb-root.gpb-root .gpb-rail{display:flex;gap:6px;margin-top:12px !important;}\n.gpb-root.gpb-root .gpb-rail span{font-size:11.5px !important;font-weight:800 !important;padding:5px 9px !important;border-radius:6px !important;background-color:rgba(255,122,26,.1) !important;border:1px solid rgba(255,122,26,.3) !important;color:#ff7a1a !important;}\n\n\/* ===========================================================\n   11. FEATURE ROWS\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-feat{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;}\n.gpb-root.gpb-root .gpb-feat \u003e div{\n  display:flex;gap:12px;align-items:flex-start;background-color:#151d28 !important;\n  border:1px solid #25313f !important;border-radius:11px !important;padding:14px 16px !important;\n  font-size:14px !important;color:#c8d4e0 !important;\n}\n.gpb-root.gpb-root .gpb-dot{flex:0 0 auto;width:7px;height:7px;border-radius:50% !important;background-color:#ff7a1a !important;margin-top:8px !important;box-shadow:0 0 0 4px rgba(255,122,26,.13) !important;}\n\n\/* ===========================================================\n   12. TOOL PICKER\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-picker{background-color:#151d28 !important;border:1px solid #25313f !important;border-radius:14px !important;padding:24px 22px !important;}\n.gpb-root.gpb-root .gpb-pick-btns{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 20px !important;}\n.gpb-root.gpb-root .gpb-pick-btns button{\n  background-color:#111823 !important;border:1px solid #25313f !important;color:#e8eef5 !important;\n  font-size:13.5px !important;font-weight:700 !important;padding:10px 15px !important;border-radius:9px !important;transition:.2s;\n}\n.gpb-root.gpb-root .gpb-pick-btns button:hover{border-color:#28c4b8 !important;}\n.gpb-root.gpb-root .gpb-pick-btns button.is-on{background-color:#28c4b8 !important;border-color:#28c4b8 !important;color:#08221f !important;}\n.gpb-root.gpb-root .gpb-pick-out{\n  border-left:3px solid #28c4b8 !important;background-color:#111823 !important;\n  border-radius:0 11px 11px 0 !important;padding:16px 18px !important;min-height:96px;\n}\n.gpb-root.gpb-root .gpb-pick-out h4{font-size:15px !important;margin:0 0 6px !important;color:#28c4b8 !important;}\n.gpb-root.gpb-root .gpb-pick-out p{font-size:14px !important;color:#93a4b7 !important;margin:0 0 8px !important;}\n.gpb-root.gpb-root .gpb-pick-out p:last-child{margin:0 !important;}\n\n\/* ===========================================================\n   13. HONESTY BOX\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-note{\n  background-image:linear-gradient(180deg,rgba(255,122,26,.09),rgba(255,122,26,.03)) !important;\n  border:1px solid rgba(255,122,26,.34) !important;border-radius:14px !important;padding:22px 22px 8px !important;\n}\n.gpb-root.gpb-root .gpb-note h3{color:#ff7a1a !important;font-size:17px !important;}\n.gpb-root.gpb-root .gpb-note ul{padding-left:19px !important;}\n.gpb-root.gpb-root .gpb-note li{font-size:14.5px !important;color:#cbd6e2 !important;}\n\n\/* ===========================================================\n   14. TABLE\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-tablewrap{overflow-x:auto;border:1px solid #25313f !important;border-radius:14px !important;-webkit-overflow-scrolling:touch;}\n.gpb-root.gpb-root table{width:100% !important;border-collapse:collapse !important;min-width:620px;font-size:14px !important;}\n.gpb-root.gpb-root th,\n.gpb-root.gpb-root td{padding:12px 14px !important;border-bottom:1px solid #25313f !important;text-align:center !important;color:#e8eef5 !important;}\n.gpb-root.gpb-root th{background-color:#1b2431 !important;font-size:12.5px !important;font-weight:800 !important;color:#93a4b7 !important;}\n.gpb-root.gpb-root th:first-child,\n.gpb-root.gpb-root td:first-child{text-align:left !important;font-weight:700 !important;color:#e8eef5 !important;}\n.gpb-root.gpb-root thead th:nth-child(2){color:#ff7a1a !important;}\n.gpb-root.gpb-root tbody td:nth-child(2){background-color:rgba(255,122,26,.06) !important;font-weight:800 !important;}\n.gpb-root.gpb-root .gpb-yes{color:#28c4b8 !important;font-weight:900 !important;}\n.gpb-root.gpb-root .gpb-no{color:#5d6b7a !important;font-weight:900 !important;}\n.gpb-root.gpb-root tbody tr:last-child td{border-bottom:0 !important;}\n\n\/* ===========================================================\n   15. PACKAGE\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-box{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;}\n.gpb-root.gpb-root .gpb-boxitem{background-color:#151d28 !important;border:1px dashed #25313f !important;border-radius:14px !important;padding:18px !important;text-align:center !important;}\n.gpb-root.gpb-root .gpb-qty{font-size:23px !important;font-weight:900 !important;color:#ff7a1a !important;display:block;line-height:1 !important;margin:0 0 7px !important;}\n.gpb-root.gpb-root .gpb-t2{font-size:13.5px !important;color:#93a4b7 !important;}\n\n\/* ===========================================================\n   16. FAQ\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-faq{display:grid;gap:9px;}\n.gpb-root.gpb-root .gpb-q{background-color:#151d28 !important;border:1px solid #25313f !important;border-radius:11px !important;overflow:hidden;}\n.gpb-root.gpb-root .gpb-q \u003e button{\n  width:100%;text-align:left !important;background-color:transparent !important;border:0 !important;\n  color:#e8eef5 !important;font-size:15px !important;font-weight:700 !important;padding:16px 18px !important;\n  display:flex;justify-content:space-between;gap:14px;align-items:center;line-height:1.5 !important;\n}\n.gpb-root.gpb-root .gpb-q \u003e button:hover{color:#ff7a1a !important;}\n.gpb-root.gpb-root .gpb-pm{flex:0 0 auto;width:20px;height:20px;position:relative;}\n.gpb-root.gpb-root .gpb-pm::before,\n.gpb-root.gpb-root .gpb-pm::after{content:\"\";position:absolute;background-color:#ff7a1a;border-radius:2px;transition:.25s;left:50%;top:50%;transform:translate(-50%,-50%);}\n.gpb-root.gpb-root .gpb-pm::before{width:12px;height:2px;}\n.gpb-root.gpb-root .gpb-pm::after{width:2px;height:12px;}\n.gpb-root.gpb-root .gpb-q.is-open .gpb-pm::after{transform:translate(-50%,-50%) rotate(90deg);opacity:0;}\n.gpb-root.gpb-root .gpb-a{max-height:0;overflow:hidden;transition:max-height .3s ease;}\n.gpb-root.gpb-root .gpb-a \u003e div{padding:0 18px 16px !important;font-size:14.5px !important;color:#93a4b7 !important;}\n\n\/* ===========================================================\n   17. CLOSE\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-close{\n  text-align:center !important;\n  background-image:radial-gradient(600px 260px at 50% 0%,rgba(255,122,26,.14),transparent 65%) !important;\n  background-color:#111823 !important;\n}\n.gpb-root.gpb-root .gpb-close h2{font-size:clamp(21px,3vw,29px) !important;color:#e8eef5 !important;}\n.gpb-root.gpb-root .gpb-close p{max-width:640px !important;margin:0 auto !important;color:#93a4b7 !important;}\n\n\/* ===========================================================\n   18. REVEAL + RESPONSIVE + A11Y\n   =========================================================== *\/\n.gpb-root.gpb-root .gpb-rv{opacity:0;transform:translateY(18px);transition:opacity .55s ease,transform .55s ease;}\n.gpb-root.gpb-root .gpb-rv.is-in{opacity:1;transform:none;}\n.gpb-root.gpb-root .gpb-bg2{background-color:#111823 !important;}\n\n@media (max-width:900px){\n  .gpb-root.gpb-root .gpb-hero-grid{grid-template-columns:1fr;gap:32px;}\n  .gpb-root.gpb-root .gpb-panebox{grid-template-columns:1fr;}\n  .gpb-root.gpb-root .gpb-board{grid-template-columns:1fr;}\n  .gpb-root.gpb-root .gpb-flow{grid-template-columns:1fr 1fr;}\n  .gpb-root.gpb-root .gpb-node:nth-child(2)::after{display:none;}\n}\n@media (max-width:560px){\n  .gpb-root.gpb-root .gpb-sec{padding:42px 18px !important;}\n  .gpb-root.gpb-root .gpb-hero{padding:44px 18px 40px !important;}\n  .gpb-root.gpb-root .gpb-flow{grid-template-columns:1fr;}\n  .gpb-root.gpb-root .gpb-node::after{display:none;}\n}\n@media (prefers-reduced-motion:reduce){\n  .gpb-root.gpb-root *,.gpb-fixednav.gpb-fixednav *{animation:none !important;transition:none !important;}\n  .gpb-root.gpb-root .gpb-rv{opacity:1;transform:none;}\n}\n.gpb-root.gpb-root button:focus-visible,\n.gpb-fixednav.gpb-fixednav button:focus-visible{outline:2px solid #28c4b8 !important;outline-offset:2px;}\n\u003c\/style\u003e\n\n\n\u003c!-- ============ IN-FLOW TABLE OF CONTENTS ============ --\u003e\n\u003cdiv class=\"gpb-toc\"\u003e\n  \u003cdiv class=\"gpb-toc-in\" data-role=\"nav\"\u003e\n    \u003cbutton type=\"button\" data-go=\"what\"\u003eWhat it is\u003c\/button\u003e\n    \u003cbutton type=\"button\" data-go=\"why\"\u003eWhy locksmiths buy it\u003c\/button\u003e\n    \u003cbutton type=\"button\" data-go=\"modes\"\u003e4 connection modes\u003c\/button\u003e\n    \u003cbutton type=\"button\" data-go=\"board\"\u003eResistor board\u003c\/button\u003e\n    \u003cbutton type=\"button\" data-go=\"feat\"\u003eControls\u003c\/button\u003e\n    \u003cbutton type=\"button\" data-go=\"tools\"\u003eYour tool\u003c\/button\u003e\n    \u003cbutton type=\"button\" data-go=\"compare\"\u003eCompare\u003c\/button\u003e\n    \u003cbutton type=\"button\" data-go=\"box\"\u003eIn the box\u003c\/button\u003e\n    \u003cbutton type=\"button\" data-go=\"faq\"\u003eFAQ\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ HERO ============ --\u003e\n\u003cdiv class=\"gpb-hero\"\u003e\n  \u003cdiv class=\"gpb-hero-grid\"\u003e\n    \u003cdiv\u003e\n      \u003cspan class=\"gpb-eyebrow\"\u003eBench · GPT · Boot · CNF1\u003c\/span\u003e\n      \u003ch1 class=\"gpb-h1\"\u003eGODIAG ECU \u003cspan class=\"gpb-accent\"\u003eGPT Boot AD\u003c\/span\u003e\n\u003c\/h1\u003e\n      \u003cp class=\"gpb-sub\"\u003e\n        The connection box that gets your programmer onto an ECU that will not answer over OBD.\n        Bench power, switchable CAN, ignition control and a full boot resistor board - in one adapter,\n        with every wire labeled.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"gpb-modechips\"\u003e\n        \u003cspan class=\"gpb-chip\"\u003e\u003cb\u003e1\u003c\/b\u003e OBD2 Bench\u003c\/span\u003e\n        \u003cspan class=\"gpb-chip\"\u003e\u003cb\u003e2\u003c\/b\u003e GPT Bench (no opening)\u003c\/span\u003e\n        \u003cspan class=\"gpb-chip\"\u003e\u003cb\u003e3\u003c\/b\u003e Boot\u003c\/span\u003e\n        \u003cspan class=\"gpb-chip\"\u003e\u003cb\u003e4\u003c\/b\u003e CNF1\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cul class=\"gpb-hero-points\"\u003e\n        \u003cli\u003e\n\u003cspan class=\"gpb-tick\"\u003e\u003c\/span\u003e\u003cspan\u003eWorks with \u003cspan class=\"gpb-ltr\"\u003eJ2534\u003c\/span\u003e pass-thru devices, \u003cspan class=\"gpb-ltr\"\u003eCG FC200\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003efoxFlash\u003c\/span\u003e and \u003cspan class=\"gpb-ltr\"\u003ePCMflash\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"gpb-tick\"\u003e\u003c\/span\u003e\u003cspan\u003eBoot resistor board on a cable - correct values on screw terminals, nothing to solder or lose\u003c\/span\u003e\n\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"gpb-tick\"\u003e\u003c\/span\u003e\u003cspan\u003e\u003cspan class=\"gpb-ltr\"\u003e120Ω\u003c\/span\u003e CAN termination you can switch in or out, not fixed\u003c\/span\u003e\n\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"gpb-tick\"\u003e\u003c\/span\u003e\u003cspan\u003eIgnition power under software control or by hand, with the flip of one switch\u003c\/span\u003e\n\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"gpb-devwrap\"\u003e\n      \u003cdiv class=\"gpb-dev\" aria-hidden=\"true\"\u003e\n        \u003cdiv class=\"gpb-dev-body\"\u003e\n          \u003cdiv class=\"gpb-dev-brand\"\u003eGODIA\u003cspan\u003eG\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"gpb-dev-panel\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"gpb-dev-leds\"\u003e\n            \u003cdiv\u003e\n\u003ci class=\"gpb-led l1 on\"\u003e\u003c\/i\u003ePOWER\u003c\/div\u003e\n            \u003cdiv\u003e\n\u003ci class=\"gpb-led l2 on\"\u003e\u003c\/i\u003eAUTO\u003c\/div\u003e\n            \u003cdiv\u003e\n\u003ci class=\"gpb-led l3 on\"\u003e\u003c\/i\u003e120Ω\u003c\/div\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"gpb-dev-btns\"\u003e\n            \u003cspan class=\"gpb-btn-m\"\u003e\u003c\/span\u003e\u003csmall\u003eAUTO \/ MNL\u003c\/small\u003e\n            \u003cspan class=\"gpb-btn-r\"\u003e\u003c\/span\u003e\u003csmall\u003e120Ω\u003c\/small\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"gpb-dev-name\"\u003eGodiag ECU GPT Boot AD\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"gpb-dev-wires\"\u003e\n          \u003ci style=\"background-color:#e74c3c\"\u003e\u003c\/i\u003e\u003ci style=\"background-color:#f1c40f\"\u003e\u003c\/i\u003e\u003ci style=\"background-color:#2ecc71\"\u003e\u003c\/i\u003e\n          \u003ci style=\"background-color:#3498db\"\u003e\u003c\/i\u003e\u003ci style=\"background-color:#9b59b6\"\u003e\u003c\/i\u003e\u003ci style=\"background-color:#ecf0f1\"\u003e\u003c\/i\u003e\n          \u003ci style=\"background-color:#e67e22\"\u003e\u003c\/i\u003e\u003ci style=\"background-color:#95a5a6\"\u003e\u003c\/i\u003e\u003ci style=\"background-color:#1a1a1a\"\u003e\u003c\/i\u003e\n          \u003ci style=\"background-color:#c0392b\"\u003e\u003c\/i\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ WHAT IT IS ============ --\u003e\n\u003cdiv class=\"gpb-sec\" data-sec=\"what\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003cspan class=\"gpb-eyebrow\"\u003eStart here\u003c\/span\u003e\n    \u003ch2 class=\"gpb-h2\"\u003eWhat this actually is, in one sentence\u003c\/h2\u003e\n    \u003cp class=\"gpb-lead\"\u003e\n      It is not a programmer and it does not read anything by itself. It is the \u003cb\u003econnection layer\u003c\/b\u003e:\n      the power, the CAN line, the ignition timing and the boot resistors that sit between the tool you\n      already own and an ECU that is on your bench or refusing to talk through the OBD socket.\n    \u003c\/p\u003e\n\n    \u003cdiv class=\"gpb-flow\"\u003e\n      \u003cdiv class=\"gpb-node\"\u003e\n        \u003cspan class=\"gpb-num\"\u003e01\u003c\/span\u003e\n        \u003ch4\u003eYour laptop\u003c\/h4\u003e\n        \u003cp\u003ePCMflash, foxFlash or the software that came with your tool.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-node\"\u003e\n        \u003cspan class=\"gpb-num\"\u003e02\u003c\/span\u003e\n        \u003ch4\u003eYour programmer\u003c\/h4\u003e\n        \u003cp\u003eOpenport 2.0, Scanmatik, Mongoose, FC200, foxFlash - it plugs into a normal OBD2 socket.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-node gpb-star\"\u003e\n        \u003cspan class=\"gpb-num\"\u003e03\u003c\/span\u003e\n        \u003ch4\u003eGPT Boot AD\u003c\/h4\u003e\n        \u003cp\u003eGives that socket, adds 12V, switchable CAN, ignition control and boot resistors.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-node\"\u003e\n        \u003cspan class=\"gpb-num\"\u003e04\u003c\/span\u003e\n        \u003ch4\u003eThe ECU\u003c\/h4\u003e\n        \u003cp\u003eOn the bench or half-opened. Labeled wires go straight to its pins.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ WHY LOCKSMITHS ============ --\u003e\n\u003cdiv class=\"gpb-sec gpb-bg2\" data-sec=\"why\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003cspan class=\"gpb-eyebrow\"\u003eThe real reason to own one\u003c\/span\u003e\n    \u003ch2 class=\"gpb-h2\"\u003eWhy a key programmer ends up needing bench and boot\u003c\/h2\u003e\n    \u003cp class=\"gpb-lead\" style=\"margin-bottom:26px !important\"\u003e\n      Chiptuning is only half the story. Most of the jobs that force a locksmith onto the bench are immobiliser jobs.\n    \u003c\/p\u003e\n\n    \u003cdiv class=\"gpb-cards\"\u003e\n      \u003cdiv class=\"gpb-card\"\u003e\n        \u003cdiv class=\"gpb-ico\"\u003e1\u003c\/div\u003e\n        \u003ch3\u003eAll keys lost, immo locked over OBD\u003c\/h3\u003e\n        \u003cp\u003eWhen the \u003cspan class=\"gpb-ltr\"\u003ePIN \/ CS \/ ISN\u003c\/span\u003e only lives inside the engine ECU and the OBD door is shut, reading the ECU on the bench or in boot mode is the way in. This adapter is how you get on it safely.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-card gpb-t\"\u003e\n        \u003cdiv class=\"gpb-ico\"\u003e2\u003c\/div\u003e\n        \u003ch3\u003eUsed or replacement ECU\u003c\/h3\u003e\n        \u003cp\u003eRead the donor, pull the immo data, write it back and match the unit to the car yourself instead of sending the customer to the dealer.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-card\"\u003e\n        \u003cdiv class=\"gpb-ico\"\u003e3\u003c\/div\u003e\n        \u003ch3\u003eNot only engine ECUs\u003c\/h3\u003e\n        \u003cp\u003eImmo boxes, gearbox modules and clusters need the same thing: clean 12V, a CAN pair and sometimes a pin pulled through the right resistor. The board handles all of it.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-card gpb-t\"\u003e\n        \u003cdiv class=\"gpb-ico\"\u003e4\u003c\/div\u003e\n        \u003ch3\u003eStop killing boards\u003c\/h3\u003e\n        \u003cp\u003eHand-holding a loose resistor on a live ECU is how units die. Here the values are on the board and your wire clamps into a screw terminal.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ MODES ============ --\u003e\n\u003cdiv class=\"gpb-sec\" data-sec=\"modes\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003cspan class=\"gpb-eyebrow\"\u003eOne adapter, four ways in\u003c\/span\u003e\n    \u003ch2 class=\"gpb-h2\"\u003eThe four connection modes, in plain language\u003c\/h2\u003e\n    \u003cp class=\"gpb-lead\" style=\"margin-bottom:22px !important\"\u003ePick a mode to see what it means and when you would actually use it.\u003c\/p\u003e\n\n    \u003cdiv class=\"gpb-tabs\" data-role=\"tabs\"\u003e\n      \u003cbutton type=\"button\" class=\"gpb-tab is-on\" data-tab=\"m1\"\u003eOBD2 Bench\u003c\/button\u003e\n      \u003cbutton type=\"button\" class=\"gpb-tab\" data-tab=\"m2\"\u003eGPT Bench\u003c\/button\u003e\n      \u003cbutton type=\"button\" class=\"gpb-tab\" data-tab=\"m3\"\u003eBoot\u003c\/button\u003e\n      \u003cbutton type=\"button\" class=\"gpb-tab\" data-tab=\"m4\"\u003eCNF1\u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"gpb-pane is-on\" data-pane=\"m1\"\u003e\n      \u003cdiv class=\"gpb-panebox\"\u003e\n        \u003cdiv\u003e\n          \u003ch3\u003eOBD2 Bench\u003c\/h3\u003e\n          \u003cp class=\"gpb-tagline\"\u003eECU OUT OF THE CAR, CASE STAYS CLOSED\u003c\/p\u003e\n          \u003cp\u003eYou feed the ECU what the car normally gives it: permanent 12V, ignition 12V, ground and the CAN pair.\n          The adapter turns that into a standard OBD2 socket, so your tool connects exactly like it would in a vehicle -\n          only now nothing else is on the bus and the voltage is steady.\u003c\/p\u003e\n          \u003cp\u003eThis is the mode you will use most. Faster, quieter and far less risky than fighting a half-dead car with a flat battery.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"gpb-when\"\u003e\n          \u003ch4\u003eUse it when\u003c\/h4\u003e\n          \u003cul\u003e\n            \u003cli\u003eThe ECU is \u003cb\u003ealready out\u003c\/b\u003e for another reason\u003c\/li\u003e\n            \u003cli\u003eThe car's bus is \u003cb\u003enoisy or unstable\u003c\/b\u003e\n\u003c\/li\u003e\n            \u003cli\u003eYou need a repeatable connection you can trust\u003c\/li\u003e\n            \u003cli\u003eYour software supports bench but not boot\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"gpb-pane\" data-pane=\"m2\"\u003e\n      \u003cdiv class=\"gpb-panebox\"\u003e\n        \u003cdiv\u003e\n          \u003ch3\u003eGPT Bench\u003c\/h3\u003e\n          \u003cp class=\"gpb-tagline\"\u003eNO DISASSEMBLY, NO SOLDERING\u003c\/p\u003e\n          \u003cp\u003eSome Bosch Tricore ECUs (the \u003cspan class=\"gpb-ltr\"\u003eMED17 \/ EDC17\u003c\/span\u003e family) can be pushed into a service mode\n          from the outside. The trick is driving the \u003cspan class=\"gpb-ltr\"\u003eGPT1\u003c\/span\u003e and \u003cspan class=\"gpb-ltr\"\u003eGPT2\u003c\/span\u003e lines\n          at the exact moment the ECU powers up. The adapter brings those lines out and handles the power timing.\u003c\/p\u003e\n          \u003cp\u003eThe case never opens, nothing gets soldered, and the ECU goes back into the car looking untouched.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"gpb-when\"\u003e\n          \u003ch4\u003eRead before you buy\u003c\/h4\u003e\n          \u003cul\u003e\n            \u003cli\u003eForming \u003cspan class=\"gpb-ltr\"\u003eGPT1\/GPT2\u003c\/span\u003e for \u003cspan class=\"gpb-ltr\"\u003ePCMflash Module 71\u003c\/span\u003e is a \u003cb\u003eScanmatik 2 PRO\u003c\/b\u003e capability\u003c\/li\u003e\n            \u003cli\u003eOther \u003cspan class=\"gpb-ltr\"\u003eJ2534\u003c\/span\u003e devices still work here in \u003cb\u003eOBD2 or Boot mode\u003c\/b\u003e\n\u003c\/li\u003e\n            \u003cli\u003eCoverage depends on the ECU and your software, not on the adapter\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"gpb-pane\" data-pane=\"m3\"\u003e\n      \u003cdiv class=\"gpb-panebox\"\u003e\n        \u003cdiv\u003e\n          \u003ch3\u003eBoot mode\u003c\/h3\u003e\n          \u003cp class=\"gpb-tagline\"\u003eFULL ACCESS ON A LOCKED ECU\u003c\/p\u003e\n          \u003cp\u003eThe ECU is opened. At the moment power arrives, one pin on the microcontroller is pulled through a\n          \u003cb\u003especific resistor\u003c\/b\u003e to a specific voltage. That tells the chip to start its factory bootloader instead of\n          running the car software - which is how you get complete flash and EEPROM access even when the ECU is locked\n          and refuses everything else.\u003c\/p\u003e\n          \u003cp\u003eGet the resistor value wrong and nothing happens, or worse. That is exactly why this adapter ships with a\n          resistor board instead of a bag of loose parts.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"gpb-when\"\u003e\n          \u003ch4\u003eUse it when\u003c\/h4\u003e\n          \u003cul\u003e\n            \u003cli\u003eThe ECU is \u003cb\u003elocked \/ protected\u003c\/b\u003e over OBD and bench\u003c\/li\u003e\n            \u003cli\u003eYou need the \u003cb\u003efull flash or EEPROM\u003c\/b\u003e, not just a data block\u003c\/li\u003e\n            \u003cli\u003eImmo data recovery on all keys lost\u003c\/li\u003e\n            \u003cli\u003eReviving a unit after a failed write\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"gpb-pane\" data-pane=\"m4\"\u003e\n      \u003cdiv class=\"gpb-panebox\"\u003e\n        \u003cdiv\u003e\n          \u003ch3\u003e\n\u003cspan class=\"gpb-ltr\"\u003eCNF1\u003c\/span\u003e line\u003c\/h3\u003e\n          \u003cp class=\"gpb-tagline\"\u003eTHE PIN MOST CHEAP ADAPTERS SKIP\u003c\/p\u003e\n          \u003cp\u003e\u003cspan class=\"gpb-ltr\"\u003eCNF1\u003c\/span\u003e is an extra Tricore configuration line that some boot procedures need alongside\n          \u003cspan class=\"gpb-ltr\"\u003eBOOT\u003c\/span\u003e and \u003cspan class=\"gpb-ltr\"\u003eRESET\u003c\/span\u003e. Most low-cost adapters never bring it out,\n          so the procedure simply fails and you never find out why.\u003c\/p\u003e\n          \u003cp\u003eHere it has its own labeled screw terminal on the resistor board, next to \u003cspan class=\"gpb-ltr\"\u003e5V\u003c\/span\u003e,\n          \u003cspan class=\"gpb-ltr\"\u003eRESET\u003c\/span\u003e and \u003cspan class=\"gpb-ltr\"\u003eBOOT\u003c\/span\u003e.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"gpb-when\"\u003e\n          \u003ch4\u003eWhy it matters\u003c\/h4\u003e\n          \u003cul\u003e\n            \u003cli\u003eSome \u003cspan class=\"gpb-ltr\"\u003eTC17xx\u003c\/span\u003e procedures will not enter boot without it\u003c\/li\u003e\n            \u003cli\u003eNo jumper wire hanging off a probe\u003c\/li\u003e\n            \u003cli\u003eOne less reason a job fails for no visible reason\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ RESISTOR BOARD ============ --\u003e\n\u003cdiv class=\"gpb-sec gpb-bg2\" data-sec=\"board\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003cspan class=\"gpb-eyebrow\"\u003eThe part you will use every time\u003c\/span\u003e\n    \u003ch2 class=\"gpb-h2\"\u003eThe boot resistor board\u003c\/h2\u003e\n\n    \u003cdiv class=\"gpb-board\"\u003e\n      \u003cdiv class=\"gpb-pcb\"\u003e\n        \u003cdiv class=\"gpb-pcb-title\"\u003eGODIAG GPT BOOT\u003c\/div\u003e\n        \u003cdiv class=\"gpb-term\"\u003e\n          \u003cdiv\u003e\n\u003ci class=\"gpb-screw\" style=\"background-color:#e67e22\"\u003e\u003c\/i\u003e\u003cspan\u003e5V\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003ci class=\"gpb-screw\" style=\"background-color:#f1c40f\"\u003e\u003c\/i\u003e\u003cspan\u003eRESET\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003ci class=\"gpb-screw\" style=\"background-color:#e74c3c\"\u003e\u003c\/i\u003e\u003cspan\u003eCNF1\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003ci class=\"gpb-screw\" style=\"background-color:#4a5a6b\"\u003e\u003c\/i\u003e\u003cspan\u003eBOOT\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"gpb-res\"\u003e\n          \u003cspan\u003e100Ω\u003c\/span\u003e\u003cspan\u003e100Ω\u003c\/span\u003e\u003cspan\u003e120Ω\u003c\/span\u003e\u003cspan\u003e300Ω\u003c\/span\u003e\n          \u003cspan\u003e560Ω\u003c\/span\u003e\u003cspan\u003e560Ω\u003c\/span\u003e\u003cspan\u003e560Ω\u003c\/span\u003e\u003cspan\u003e1KΩ\u003c\/span\u003e\n          \u003cspan\u003e1KΩ\u003c\/span\u003e\u003cspan\u003e1KΩ\u003c\/span\u003e\u003cspan\u003e1KΩ\u003c\/span\u003e\u003cspan\u003e2KΩ\u003c\/span\u003e\n          \u003cspan\u003e2.7KΩ\u003c\/span\u003e\u003cspan\u003e2.7KΩ\u003c\/span\u003e\u003cspan\u003e10KΩ\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"gpb-rail\"\u003e\n\u003cspan\u003e3.3V\u003c\/span\u003e\u003cspan\u003e5V\u003c\/span\u003e\u003cspan\u003eGND\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cdiv class=\"gpb-feat\" style=\"grid-template-columns:1fr\"\u003e\n          \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003eScrew terminals, not solder pads.\u003c\/b\u003e Clamp your wire into \u003cspan class=\"gpb-ltr\"\u003e5V\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003eRESET\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003eCNF1\u003c\/span\u003e or \u003cspan class=\"gpb-ltr\"\u003eBOOT\u003c\/span\u003e and move on. No iron, no cold joints on a customer's ECU.\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003eValues already on the board.\u003c\/b\u003e The common boot resistors are printed and wired, and they can be put in series when a procedure asks for a value that is not there on its own.\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003eReference rails.\u003c\/b\u003e \u003cspan class=\"gpb-ltr\"\u003e3.3V\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003e5V\u003c\/span\u003e and \u003cspan class=\"gpb-ltr\"\u003eGND\u003c\/span\u003e pads right where you need them, plus a signal LED, a \u003cspan class=\"gpb-ltr\"\u003e1N4148\u003c\/span\u003e diode and a \u003cspan class=\"gpb-ltr\"\u003ePNP 2N3906\u003c\/span\u003e on board.\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003eAnti-lost design.\u003c\/b\u003e It hangs off the adapter's own cable, so it does not walk off the bench or disappear into a drawer like a loose resistor board would.\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003eUsable on its own.\u003c\/b\u003e GODIAG state it can be used independently for immobiliser work and resistor connections, not only for engine ECUs.\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ CONTROLS ============ --\u003e\n\u003cdiv class=\"gpb-sec\" data-sec=\"feat\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003cspan class=\"gpb-eyebrow\"\u003eOn the box itself\u003c\/span\u003e\n    \u003ch2 class=\"gpb-h2\"\u003eWhat the controls do\u003c\/h2\u003e\n    \u003cdiv class=\"gpb-feat\"\u003e\n      \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003eAUTO \/ MNL switch.\u003c\/b\u003e Let the software cut and restore ignition power automatically, or take the timing into your own hands.\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003e\u003cspan class=\"gpb-ltr\"\u003e120Ω\u003c\/span\u003e button.\u003c\/b\u003e Add or remove CAN termination. Some ECUs already terminate internally, so a fixed resistor is a problem - this one is a choice.\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003eThree status LEDs.\u003c\/b\u003e Power, auto mode and termination state visible at a glance, no multimeter needed.\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003eLabeled ECU harness.\u003c\/b\u003e Every colored wire has a printed tag - \u003cspan class=\"gpb-ltr\"\u003e+12V\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003e+12V IGN\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003eGND\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003eCAN H\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003eCAN L\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003eK\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003ePWM\u003c\/span\u003e and more.\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003e\u003cspan class=\"gpb-ltr\"\u003eDB25\u003c\/span\u003e to \u003cspan class=\"gpb-ltr\"\u003eOBD2\u003c\/span\u003e cable.\u003c\/b\u003e Your tool plugs into a normal OBD2 socket, with a separate barrel jack for the 12V bench supply and a power indicator.\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv\u003e\n\u003ci class=\"gpb-dot\"\u003e\u003c\/i\u003e\u003cspan\u003e\u003cb\u003eShort-circuit protected boot line.\u003c\/b\u003e The resistor board sits on a protected connection so a slipped probe is less likely to take an ECU with it.\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ TOOL PICKER ============ --\u003e\n\u003cdiv class=\"gpb-sec gpb-bg2\" data-sec=\"tools\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003cspan class=\"gpb-eyebrow\"\u003eCompatibility\u003c\/span\u003e\n    \u003ch2 class=\"gpb-h2\"\u003eWill it work with the tool you already have?\u003c\/h2\u003e\n\n    \u003cdiv class=\"gpb-picker\" data-role=\"picker\"\u003e\n      \u003cp style=\"margin:0 !important;color:#93a4b7 !important;font-size:15px !important\"\u003ePick your programmer:\u003c\/p\u003e\n      \u003cdiv class=\"gpb-pick-btns\"\u003e\n        \u003cbutton type=\"button\" class=\"is-on\" data-tool=\"fc200\"\u003eCG FC200\u003c\/button\u003e\n        \u003cbutton type=\"button\" data-tool=\"fox\"\u003efoxFlash\u003c\/button\u003e\n        \u003cbutton type=\"button\" data-tool=\"open\"\u003eOpenport 2.0 + PCMflash\u003c\/button\u003e\n        \u003cbutton type=\"button\" data-tool=\"sm2\"\u003eScanmatik 2 PRO\u003c\/button\u003e\n        \u003cbutton type=\"button\" data-tool=\"other\"\u003eOther J2534\u003c\/button\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-pick-out\" data-role=\"pickout\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv style=\"height:22px\"\u003e\u003c\/div\u003e\n\n    \u003cdiv class=\"gpb-note\"\u003e\n      \u003ch3\u003eStraight talk before you order\u003c\/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eThis adapter \u003cb\u003edoes not read or write anything on its own\u003c\/b\u003e. It needs a programmer and its software.\u003c\/li\u003e\n        \u003cli\u003e\n\u003cb\u003eYou supply 12V.\u003c\/b\u003e A stable bench power supply plugs into the barrel jack on the OBD2 cable.\u003c\/li\u003e\n        \u003cli\u003e\n\u003cb\u003eYou still need the pinout\u003c\/b\u003e for each specific ECU. GODIAG publish wiring diagrams for common units such as \u003cspan class=\"gpb-ltr\"\u003eMED17.5\u003c\/span\u003e and \u003cspan class=\"gpb-ltr\"\u003eSIMOS 8.10\u003c\/span\u003e, and the community covers most of the rest.\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"gpb-ltr\"\u003eGPT1\/GPT2\u003c\/span\u003e signal generation for \u003cspan class=\"gpb-ltr\"\u003ePCMflash Module 71\u003c\/span\u003e comes from \u003cb\u003eScanmatik 2 PRO\u003c\/b\u003e. With other pass-thru devices you work in OBD2 or Boot mode.\u003c\/li\u003e\n        \u003cli\u003eWhich ECUs are supported is decided by \u003cb\u003eyour software\u003c\/b\u003e, not by this cable.\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ COMPARE ============ --\u003e\n\u003cdiv class=\"gpb-sec\" data-sec=\"compare\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003cspan class=\"gpb-eyebrow\"\u003eAgainst the usual alternatives\u003c\/span\u003e\n    \u003ch2 class=\"gpb-h2\"\u003eWhy not just buy a cheap bench cable\u003c\/h2\u003e\n    \u003cp class=\"gpb-lead\" style=\"margin-bottom:20px !important\"\u003eComparison published by GODIAG against common bench and boot adapters.\u003c\/p\u003e\n\n    \u003cdiv class=\"gpb-tablewrap\"\u003e\n      \u003ctable\u003e\n        \u003cthead\u003e\n          \u003ctr\u003e\n            \u003cth\u003eFeature\u003c\/th\u003e\n            \u003cth\u003eGPT Boot AD\u003c\/th\u003e\n            \u003cth\u003eGreen PCB bench board\u003c\/th\u003e\n            \u003cth\u003eGPT + DB15 wire set\u003c\/th\u003e\n            \u003cth\u003eTwin DB25 wire set\u003c\/th\u003e\n          \u003c\/tr\u003e\n        \u003c\/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n\u003ctd\u003eGPT\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003ctr\u003e\n\u003ctd\u003eBoot\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003ctr\u003e\n\u003ctd\u003eCNF1 line\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003ctr\u003e\n\u003ctd\u003eCompatible with J2534 devices\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003ctr\u003e\n\u003ctd\u003eBoot resistor board included\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003ctr\u003e\n\u003ctd\u003eDedicated ECU terminal\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003ctr\u003e\n\u003ctd\u003eIgnition control, manual + automatic\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003ctr\u003e\n\u003ctd\u003eSwitchable 120Ω CAN termination\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd\u003eFixed 120Ω\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd\u003eFixed 120Ω\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003ctr\u003e\n\u003ctd\u003e5V \/ 3.3V \/ GND \/ CNF1 outputs\u003c\/td\u003e\n\u003ctd class=\"gpb-yes\"\u003e✓\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003ctd class=\"gpb-no\"\u003e✗\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ IN THE BOX ============ --\u003e\n\u003cdiv class=\"gpb-sec gpb-bg2\" data-sec=\"box\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003cspan class=\"gpb-eyebrow\"\u003ePackage\u003c\/span\u003e\n    \u003ch2 class=\"gpb-h2\"\u003eWhat you get\u003c\/h2\u003e\n    \u003cdiv class=\"gpb-box\"\u003e\n      \u003cdiv class=\"gpb-boxitem\"\u003e\n\u003cspan class=\"gpb-qty\"\u003e1\u003c\/span\u003e\u003cspan class=\"gpb-t2\"\u003eGODIAG ECU GPT Boot AD adapter with labeled ECU harness\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"gpb-boxitem\"\u003e\n\u003cspan class=\"gpb-qty\"\u003e1\u003c\/span\u003e\u003cspan class=\"gpb-t2\"\u003eBoot resistor board on attached cable\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"gpb-boxitem\"\u003e\n\u003cspan class=\"gpb-qty\"\u003e1\u003c\/span\u003e\u003cspan class=\"gpb-t2\"\u003e\u003cspan class=\"gpb-ltr\"\u003eOBD2\u003c\/span\u003e to \u003cspan class=\"gpb-ltr\"\u003eDB25\u003c\/span\u003e cable with 12V input\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"gpb-boxitem\"\u003e\n\u003cspan class=\"gpb-qty\"\u003e8\u003c\/span\u003e\u003cspan class=\"gpb-t2\"\u003eSoft silicone jumper wires\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ FAQ ============ --\u003e\n\u003cdiv class=\"gpb-sec\" data-sec=\"faq\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003cspan class=\"gpb-eyebrow\"\u003eBefore you ask us\u003c\/span\u003e\n    \u003ch2 class=\"gpb-h2\"\u003eCommon questions\u003c\/h2\u003e\n\n    \u003cdiv class=\"gpb-faq\" data-role=\"faq\"\u003e\n      \u003cdiv class=\"gpb-q\"\u003e\n        \u003cbutton type=\"button\"\u003eDo I have to open the ECU every time?\u003cspan class=\"gpb-pm\"\u003e\u003c\/span\u003e\u003c\/button\u003e\n        \u003cdiv class=\"gpb-a\"\u003e\u003cdiv\u003eNo. OBD2 Bench and GPT Bench both work with the case closed. You only open the ECU for Boot and CNF1 procedures, and even then the resistor board means you are clipping onto pins rather than soldering.\u003c\/div\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-q\"\u003e\n        \u003cbutton type=\"button\"\u003eCan I use it without any other tool?\u003cspan class=\"gpb-pm\"\u003e\u003c\/span\u003e\u003c\/button\u003e\n        \u003cdiv class=\"gpb-a\"\u003e\u003cdiv\u003eNo. It is a connection adapter. The reading and writing is done by your programmer and its software - \u003cspan class=\"gpb-ltr\"\u003eFC200\u003c\/span\u003e, \u003cspan class=\"gpb-ltr\"\u003efoxFlash\u003c\/span\u003e, a \u003cspan class=\"gpb-ltr\"\u003eJ2534\u003c\/span\u003e device with \u003cspan class=\"gpb-ltr\"\u003ePCMflash\u003c\/span\u003e, and so on.\u003c\/div\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-q\"\u003e\n        \u003cbutton type=\"button\"\u003eWhat power supply do I need?\u003cspan class=\"gpb-pm\"\u003e\u003c\/span\u003e\u003c\/button\u003e\n        \u003cdiv class=\"gpb-a\"\u003e\u003cdiv\u003eA stable 12V bench supply with enough current for the module you are working on. It connects to the barrel jack on the OBD2 to DB25 cable, and the green indicator confirms power is present.\u003c\/div\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-q\"\u003e\n        \u003cbutton type=\"button\"\u003eWhy does the 120Ω resistor need a switch?\u003cspan class=\"gpb-pm\"\u003e\u003c\/span\u003e\u003c\/button\u003e\n        \u003cdiv class=\"gpb-a\"\u003e\u003cdiv\u003eOn the bench there is no vehicle network, so CAN usually needs termination to communicate. But some modules already terminate internally, and adding a second resistor breaks the connection. A fixed resistor forces one behaviour; a switch lets you match the module in front of you.\u003c\/div\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-q\"\u003e\n        \u003cbutton type=\"button\"\u003eDoes it support my specific ECU?\u003cspan class=\"gpb-pm\"\u003e\u003c\/span\u003e\u003c\/button\u003e\n        \u003cdiv class=\"gpb-a\"\u003e\u003cdiv\u003eThat question belongs to your software, not to this adapter. If your tool lists an ECU for bench or boot, this gives you the physical connection to reach it - power, CAN, ignition timing and the boot resistors.\u003c\/div\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-q\"\u003e\n        \u003cbutton type=\"button\"\u003eIs it only for engine ECUs?\u003cspan class=\"gpb-pm\"\u003e\u003c\/span\u003e\u003c\/button\u003e\n        \u003cdiv class=\"gpb-a\"\u003e\u003cdiv\u003eNo. GODIAG state the resistor board can be used independently for immobiliser systems, data reading and writing, and immo resistor connections. Anything that needs clean bench power, a CAN pair or a pin pulled through a known resistor is fair game.\u003c\/div\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gpb-q\"\u003e\n        \u003cbutton type=\"button\"\u003eHas it been shown working with FC200?\u003cspan class=\"gpb-pm\"\u003e\u003c\/span\u003e\u003c\/button\u003e\n        \u003cdiv class=\"gpb-a\"\u003e\u003cdiv\u003eYes. GODIAG demonstrate the adapter together with a \u003cspan class=\"gpb-ltr\"\u003eGT100\u003c\/span\u003e breakout box and \u003cspan class=\"gpb-ltr\"\u003eCG FC200\u003c\/span\u003e reading a BMW \u003cspan class=\"gpb-ltr\"\u003eEDC17CP02\u003c\/span\u003e ECU.\u003c\/div\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ============ CLOSE ============ --\u003e\n\u003cdiv class=\"gpb-sec gpb-close\"\u003e\n  \u003cdiv class=\"gpb-wrap gpb-rv\"\u003e\n    \u003ch2\u003eOne cable between you and the jobs you turn away\u003c\/h2\u003e\n    \u003cp\u003eBench, GPT, Boot and CNF1 in a single labeled adapter, with the resistor board attached so it is there when the job needs it.\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003cscript\u003e\n(function(){\n  var RTL = false;\n\n  var TOOLS = {\n    fc200:{t:\"CG FC200\",\n      a:\"Connect FC200 to the adapter's OBD2 socket using the supplied OBD2 to DB25 cable, feed 12V into the barrel jack and wire the labeled harness to the ECU pins.\",\n      b:\"Bench and Boot both supported. GODIAG demonstrate this exact pairing, with a GT100 breakout box, reading a BMW EDC17CP02.\"},\n    fox:{t:\"foxFlash\",\n      a:\"Same connection as any OBD2 tool: foxFlash into the adapter's OBD2 socket, 12V into the barrel jack, harness to the ECU.\",\n      b:\"Use the adapter for bench connections and for boot procedures where foxFlash asks you to pull BOOT, RESET or CNF1 through a resistor.\"},\n    open:{t:\"Tactrix Openport 2.0 + PCMflash\",\n      a:\"The classic budget route. Openport into the OBD2 socket, PCMflash on the laptop, ignition control either automatic or on the manual button.\",\n      b:\"OBD2 bench and Boot mode work. GPT1\/GPT2 signal generation for PCMflash Module 71 is not something Openport forms - that one needs Scanmatik 2 PRO.\"},\n    sm2:{t:\"Scanmatik 2 PRO\",\n      a:\"The full-feature pairing. Scanmatik 2 PRO into the OBD2 socket, PCMflash on the laptop.\",\n      b:\"This is the device that can form the GPT1 and GPT2 signals required by PCMflash Module 71, which is what unlocks GPT bench reading with the ECU still closed.\"},\n    other:{t:\"Other J2534 pass-thru devices\",\n      a:\"Mongoose JLR, MongoosePro JLR, GNA600 (VCM1), Mazda VCM2 and similar J2534 devices connect through the same OBD2 socket.\",\n      b:\"They work in OBD2 and Boot 53 modes. Check your own software for which ECUs it covers in each mode.\"}\n  };\n\n  \/* ----------------------------------------------------------------\n     Measure EVERY fixed\/sticky full-width bar pinned to the top of the\n     viewport (header rows, announcement bars, promo strips) instead of\n     guessing one selector. Returns the lowest edge + the lowest z-index\n     so we can always sit below them.\n     ---------------------------------------------------------------- *\/\n  var barCache = {top:0, z:null, at:0};\n  function measureBars(force){\n    var now = Date.now();\n    if(!force \u0026\u0026 now - barCache.at \u003c 150) return barCache;\n    barCache.at = now;\n\n    var vw = window.innerWidth, vh = window.innerHeight, bottom = 0, minZ = null;\n    var els = document.querySelectorAll(\n      'header, nav, sticky-header, [class*=\"header\"], [id*=\"header\"], [class*=\"Header\"],' +\n      '[class*=\"sticky\"], [class*=\"announce\"], [class*=\"topbar\"], [class*=\"top-bar\"],' +\n      'body \u003e div, body \u003e section');\n\n    for(var i=0;i\u003cels.length;i++){\n      var el = els[i];\n      if(el.className \u0026\u0026 String(el.className).indexOf('gpb-fixednav') \u003e -1) continue;\n\n      var r = el.getBoundingClientRect();\n      if(r.height \u003c 8) continue;\n      if(r.width \u003c vw * 0.5) continue;      \/* full-width bars only          *\/\n      if(r.top \u003e 8 || r.bottom \u003c= 0) continue; \/* must be pinned to the top  *\/\n      if(r.bottom \u003e vh * 0.5) continue;     \/* ignore full-screen overlays   *\/\n\n      var cs = window.getComputedStyle(el);\n      if(cs.position !== 'fixed' \u0026\u0026 cs.position !== 'sticky') continue;\n      if(cs.display === 'none' || cs.visibility === 'hidden' || parseFloat(cs.opacity) === 0) continue;\n\n      if(r.bottom \u003e bottom) bottom = r.bottom;\n      var z = parseInt(cs.zIndex,10);\n      if(!isNaN(z) \u0026\u0026 (minZ === null || z \u003c minZ)) minZ = z;\n    }\n    barCache.top = bottom;\n    barCache.z = minZ;\n    return barCache;\n  }\n\n  \/* ---------- horizontal drag + wheel scrolling for a strip ---------- *\/\n  function makeDraggable(strip){\n    var down=false, moved=false, startX=0;\n    strip.addEventListener('pointerdown',function(e){\n      if(e.pointerType==='touch') return;           \/* native touch scroll is fine *\/\n      down=true; moved=false; startX=e.clientX;\n      strip.classList.add('is-drag');\n    });\n    strip.addEventListener('pointermove',function(e){\n      if(!down) return;\n      var dx = e.clientX - startX;\n      if(Math.abs(dx)\u003e3) moved=true;\n      startX = e.clientX;\n      strip.scrollBy(-dx,0);\n      e.preventDefault();\n    });\n    ['pointerup','pointerleave','pointercancel'].forEach(function(ev){\n      strip.addEventListener(ev,function(){ down=false; strip.classList.remove('is-drag'); });\n    });\n    strip.addEventListener('click',function(e){\n      if(moved){ e.preventDefault(); e.stopPropagation(); moved=false; }\n    },true);\n    strip.addEventListener('wheel',function(e){\n      if(Math.abs(e.deltaY) \u003e Math.abs(e.deltaX)){\n        var before = strip.scrollLeft;\n        strip.scrollBy(e.deltaY,0);\n        if(strip.scrollLeft !== before) e.preventDefault();\n      }\n    },{passive:false});\n  }\n\n  \/* ---------- centre a button inside its strip (works LTR + RTL) ---------- *\/\n  function centreBtn(strip,btn){\n    if(!strip||!btn) return;\n    var sr = strip.getBoundingClientRect(), br = btn.getBoundingClientRect();\n    var delta = (br.left + br.width\/2) - (sr.left + sr.width\/2);\n    if(Math.abs(delta) \u003c 2) return;\n    if(strip.scrollBy) strip.scrollBy({left:delta,behavior:'smooth'});\n    else strip.scrollLeft += delta;\n  }\n\n  function init(root){\n    if(root.getAttribute('data-gpb-ready')==='1') return;\n    root.setAttribute('data-gpb-ready','1');\n\n    var toc    = root.querySelector('[data-role=\"nav\"]');\n    var sections = root.querySelectorAll('[data-sec]');\n\n    \/* ---------- build the floating nav on \u003cbody\u003e ---------- *\/\n    var fixedWrap = null, fixedStrip = null;\n    if(toc \u0026\u0026 !document.querySelector('.gpb-fixednav')){\n      fixedWrap = document.createElement('div');\n      fixedWrap.className = 'gpb-fixednav' + (RTL ? ' gpb-rtl' : '');\n      fixedStrip = document.createElement('div');\n      fixedStrip.className = 'gpb-fn-in';\n      fixedStrip.innerHTML = toc.innerHTML;\n      fixedWrap.appendChild(fixedStrip);\n      document.body.appendChild(fixedWrap);\n      makeDraggable(fixedStrip);\n    }\n\n    makeDraggable(toc);\n\n    \/* ---------- click to scroll ---------- *\/\n    function goTo(key){\n      var target = root.querySelector('[data-sec=\"'+key+'\"]');\n      if(!target) return;\n      var off = measureBars(true).top + (fixedWrap ? fixedWrap.offsetHeight : 0) + 14;\n      var y = target.getBoundingClientRect().top + window.pageYOffset - off;\n      window.scrollTo({top:y,behavior:'smooth'});\n    }\n    [toc,fixedStrip].forEach(function(strip){\n      if(!strip) return;\n      strip.addEventListener('click',function(e){\n        var b = e.target.closest('button[data-go]');\n        if(!b) return;\n        goTo(b.getAttribute('data-go'));\n      });\n    });\n\n    \/* ---------- scroll spy + floating nav visibility ---------- *\/\n    var ticking = false;\n    function onScroll(){\n      if(ticking) return;\n      ticking = true;\n      window.requestAnimationFrame(function(){\n        ticking = false;\n        var bars = measureBars();\n        var hb = bars.top;\n\n        if(fixedWrap){\n          var rootRect = root.getBoundingClientRect();\n          \/* sit under every top bar, and match the description container width *\/\n          fixedWrap.style.top    = hb + 'px';\n          fixedWrap.style.left   = Math.max(0, rootRect.left) + 'px';\n          fixedWrap.style.width  = Math.min(rootRect.width, window.innerWidth) + 'px';\n          fixedWrap.style.zIndex = (bars.z !== null ? Math.max(bars.z - 1, 0) : 4);\n          var tocRect = toc ? toc.getBoundingClientRect() : rootRect;\n          var show = tocRect.bottom \u003c hb + 4 \u0026\u0026 rootRect.bottom \u003e hb + 120;\n          fixedWrap.classList.toggle('is-visible', show);\n        }\n\n        \/* which section is being read *\/\n        var line = hb + (fixedWrap ? fixedWrap.offsetHeight : 0) + 60;\n        var active = null;\n        for(var i=0;i\u003csections.length;i++){\n          var r = sections[i].getBoundingClientRect();\n          if(r.top \u003c= line \u0026\u0026 r.bottom \u003e line){ active = sections[i].getAttribute('data-sec'); break; }\n          if(r.top \u003e line){ break; }\n          active = sections[i].getAttribute('data-sec');\n        }\n        [toc,fixedStrip].forEach(function(strip){\n          if(!strip) return;\n          var current = null;\n          strip.querySelectorAll('button[data-go]').forEach(function(b){\n            var on = b.getAttribute('data-go') === active;\n            if(on \u0026\u0026 !b.classList.contains('is-on')) current = b;\n            b.classList.toggle('is-on', on);\n          });\n          if(current) centreBtn(strip,current);\n        });\n      });\n    }\n    window.addEventListener('scroll',onScroll,{passive:true});\n    window.addEventListener('resize',onScroll,{passive:true});\n    onScroll();\n\n    \/* ---------- tabs ---------- *\/\n    var tabs = root.querySelector('[data-role=\"tabs\"]');\n    if(tabs){\n      tabs.addEventListener('click',function(e){\n        var b = e.target.closest('.gpb-tab');\n        if(!b) return;\n        var key = b.getAttribute('data-tab');\n        tabs.querySelectorAll('.gpb-tab').forEach(function(x){x.classList.toggle('is-on',x===b);});\n        root.querySelectorAll('[data-pane]').forEach(function(p){\n          p.classList.toggle('is-on',p.getAttribute('data-pane')===key);\n        });\n      });\n    }\n\n    \/* ---------- tool picker ---------- *\/\n    var picker = root.querySelector('[data-role=\"picker\"]');\n    if(picker){\n      var out = picker.querySelector('[data-role=\"pickout\"]');\n      var render = function(key){\n        var d = TOOLS[key]; if(!d||!out) return;\n        out.innerHTML = '\u003ch4\u003e'+d.t+'\u003c\/h4\u003e\u003cp\u003e'+d.a+'\u003c\/p\u003e\u003cp\u003e'+d.b+'\u003c\/p\u003e';\n      };\n      picker.addEventListener('click',function(e){\n        var b = e.target.closest('button[data-tool]');\n        if(!b) return;\n        picker.querySelectorAll('button[data-tool]').forEach(function(x){x.classList.toggle('is-on',x===b);});\n        render(b.getAttribute('data-tool'));\n      });\n      render('fc200');\n    }\n\n    \/* ---------- faq ---------- *\/\n    var faq = root.querySelector('[data-role=\"faq\"]');\n    if(faq){\n      faq.addEventListener('click',function(e){\n        var b = e.target.closest('.gpb-q \u003e button');\n        if(!b) return;\n        var q = b.parentNode, a = q.querySelector('.gpb-a');\n        var open = q.classList.contains('is-open');\n        faq.querySelectorAll('.gpb-q').forEach(function(x){\n          x.classList.remove('is-open');\n          var xa = x.querySelector('.gpb-a'); if(xa) xa.style.maxHeight = null;\n        });\n        if(!open){ q.classList.add('is-open'); a.style.maxHeight = a.scrollHeight + 'px'; }\n      });\n    }\n\n    \/* ---------- reveal ---------- *\/\n    var items = root.querySelectorAll('.gpb-rv');\n    if('IntersectionObserver' in window){\n      var io = new IntersectionObserver(function(entries){\n        entries.forEach(function(en){\n          if(en.isIntersecting){ en.target.classList.add('is-in'); io.unobserve(en.target); }\n        });\n      },{threshold:.12});\n      items.forEach(function(i){io.observe(i);});\n    } else {\n      items.forEach(function(i){i.classList.add('is-in');});\n    }\n  }\n\n  function boot(){ document.querySelectorAll('[data-role=\"gpb-root\"]').forEach(init); }\n\n  if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', boot); }\n  else { boot(); }\n  document.addEventListener('shopify:section:load', boot);\n})();\n\u003c\/script\u003e\n\n\u003c\/div\u003e\n\u003c!-- ============ END GODIAG ECU GPT Boot AD - EN v2 ============ --\u003e","brand":"GODIAG","offers":[{"title":"Default Title","offer_id":52276839645404,"sku":"GOD13","price":49.9,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0667\/1391\/1516\/files\/130_566c9c59-2593-461a-aef8-bdc20ff24c2f.jpg?v=1786733159","url":"https:\/\/keyshop-online.com\/products\/godiag-ecu-gpt-boot-ad-bench-boot-adapter","provider":"Keyshop-Online","version":"1.0","type":"link"}