{
 "manufacturer": "Datakom",
 "manufacturer_slug": "datakom",
 "model": "D-300 / D-500 / D-700 genset controllers",
 "model_slug": "d-500",
 "short_model": "D-500",
 "aliases": [
  "D-300",
  "D-500",
  "D-700",
  "D300",
  "D500",
  "D700"
 ],
 "equipment_type": "Generator controller",
 "applies_to": "Datakom D-300, D-500 and D-700 controllers, Modbus application manual V5.6 (firmware 5.6 era).",
 "summary": "Datakom's D-series units control a single genset (D-300, D-500) or a synchronising genset (D-700) and expose Modbus RTU on RS-485/RS-232 and Modbus TCP on Ethernet or GPRS. Everything sits in holding registers read with function 3. This map covers the 16-bit live values (frequencies, battery and charge voltages, oil pressure, fuel level, rpm), the operating status and mode, the shutdown and warning alarm bits, the function flags and the pushbutton-simulation register used for remote start/stop; all 32-bit values are left out (see notes).",
 "transport": [
  "RTU",
  "TCP"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": null,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": 502
 },
 "addressing": {
  "convention": "0-based",
  "note": "The register tables print decimal addresses and they go on the wire unchanged. The manual's read example asks for 16 registers 'starting from address 20h (32 decimal)' with the frame 01 03 00 20 00 10, and its write example puts register 40h in the frame as 00 40. So 10338 (mains frequency) is requested as 10338, with no 40001 offset and no minus 1."
 },
 "default_word_order": null,
 "firmware": "Manual revision 03 (10.09.2015) updated for firmware 5.6",
 "source": {
  "title": "D-300 / 500 / 700 Modbus Application Manual",
  "doc_number": "500-MODBUS V5.6",
  "revision_date": "2016-04-25",
  "url": "https://www.datakom.com.tr/upload/Files/500_MODBUS.pdf",
  "pages": "pp. 3-4 (settings), 7-8 (read/write frames), 10 (data formats), 11-16 (register tables), 17-18 (alarm bits and function flags)"
 },
 "notes": [
  "Left out: every 32-bit value (all phase voltages, currents and powers at 10240-10327, average voltage and current at 10377-10384, the run/crank/hour/energy counters at 10616-10647 and 11569-11581, GPS position and the multi-genset totals). The manual contradicts itself on word order: one paragraph says the least significant register comes first, the next says the high-order 16 bits are in the first register. Until Datakom settles it, those registers are not listed.",
  "Left out: the power factor registers (10328-10335 and 11376). The table prints a x10 coefficient for them, which would give power factor in steps of 0.1 and looks doubtful; they are omitted rather than published with a possibly wrong scale.",
  "COEFF. in the manual is how many times larger the raw value is than the real one: x10 means divide by 10 (scale 0.1), x100 means divide by 100 (scale 0.01).",
  "Left out: the engine, oil, canopy and ambient temperature registers (10362, 10364-10366 and the _2 copies at 10368 and 10370-10372). The manual gives them only as '16bit' in tenths of a degree C and never says whether they are signed, so readings below zero cannot be decoded with certainty.",
  "Alarm and flag arrays are packed with alarm/flag 0 in bit 0 of the first register. The shutdown array is 10504-10519, loaddump 10520-10535 and warning 10536-10551; only the words holding the named engine and genset alarms are listed (words 1-3 are digital-input and expansion-input alarms, words 5-6 ambient-temperature and sender alarms). The loaddump array uses the same bit layout as the other two.",
  "The function-flag array is 224 bits at 11555-11568. Page 15 of the manual repeats a corrupted copy of the counter table that wrongly reuses address 11555; the first table on the page (flags at 11555, counters from 11569) is the consistent one.",
  "8193 lists a x10 coefficient but is a bit field; the coefficient is ignored. Writing 14536 to 8210 forces a hard reset of the unit and is deliberately not listed.",
  "Also not listed: the harmonic-analysis and scope-meter block (8194, 10386-10503), analog input ohm values, the LCD buffer and LED, output and expansion status bits."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 8193,
   "documented": "8193",
   "name": "Pushbutton simulation",
   "description": "Write a bit to press the matching front-panel key remotely.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": {
    "0": "Stop button",
    "1": "Run button (D-500) / Manual button (D-700)",
    "2": "Auto button",
    "3": "Test button",
    "4": "Run button (D-700)",
    "5": "GCB button",
    "6": "MCB button",
    "7": "Menu+ button",
    "8": "Menu- button",
    "9": "Up button",
    "10": "Down button",
    "14": "Button long pressed",
    "15": "Button very long pressed"
   }
  },
  {
   "table": "holding_register",
   "address": 10338,
   "documented": "10338",
   "name": "Mains frequency",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10339,
   "documented": "10339",
   "name": "Genset frequency",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10340,
   "documented": "10340",
   "name": "Charge input voltage",
   "description": "Charge alternator (D+) input voltage.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10341,
   "documented": "10341",
   "name": "Battery voltage",
   "description": "Starter battery voltage.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10343,
   "documented": "10343",
   "name": "Charge input 2 voltage",
   "description": "Second charge input voltage.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10344,
   "documented": "10344",
   "name": "Battery 2 voltage",
   "description": "Second battery voltage.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10361,
   "documented": "10361",
   "name": "Oil pressure",
   "description": "Engine oil pressure in bar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "bar",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10363,
   "documented": "10363",
   "name": "Fuel level",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10375,
   "documented": "10375",
   "name": "Magnetic pickup reading",
   "description": "Speed measured on the magnetic pickup input.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10376,
   "documented": "10376",
   "name": "Engine rpm",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10385,
   "documented": "10385",
   "name": "Minimum cranking battery voltage",
   "description": "Lowest battery voltage seen during the last crank.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10507,
   "documented": "10507 (in 10504-10519)",
   "name": "Shutdown alarm bits 48-63",
   "description": "Word 4 of the shutdown alarm bit array; bit 0 = alarm 48.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Genset low frequency",
    "1": "Genset high frequency",
    "2": "Genset low RPM",
    "3": "Genset high RPM",
    "4": "Genset low voltage",
    "5": "Genset high voltage",
    "6": "Low oil pressure",
    "7": "High oil pressure",
    "8": "Low engine temperature",
    "9": "High engine temperature",
    "10": "Low fuel level",
    "11": "High fuel level",
    "12": "Low oil temperature",
    "13": "High oil temperature",
    "14": "Low canopy temperature",
    "15": "High canopy temperature"
   }
  },
  {
   "table": "holding_register",
   "address": 10510,
   "documented": "10510 (in 10504-10519)",
   "name": "Shutdown alarm bits 96-111",
   "description": "Word 7 of the shutdown alarm bit array; bit 0 = alarm 96.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Low battery voltage",
    "1": "High battery voltage",
    "2": "Fail to start",
    "3": "Fail to stop",
    "4": "Low charge voltage",
    "5": "J1939 ECU error",
    "6": "High air inlet temperature",
    "7": "Low coolant level",
    "8": "Voltage unbalance",
    "9": "Current unbalance",
    "10": "Over current",
    "11": "Over load",
    "12": "Reverse power",
    "13": "Genset phase order fail",
    "14": "Mains phase order fail",
    "15": "Genset CB fail to close"
   }
  },
  {
   "table": "holding_register",
   "address": 10511,
   "documented": "10511 (in 10504-10519)",
   "name": "Shutdown alarm bits 112-127",
   "description": "Word 8 of the shutdown alarm bit array; bit 0 = alarm 112.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Genset CB fail to open",
    "1": "Mains CB fail to close",
    "2": "Mains CB fail to open",
    "3": "Device address fail",
    "4": "Comm. bus error",
    "5": "Excitation lost",
    "6": "Service 1 request",
    "7": "Service 2 request",
    "8": "Service 3 request",
    "9": "G59: no mains frequency",
    "10": "G59: mains frequency fail",
    "11": "G59: mains reverse power",
    "12": "G59: ROCOF df/dt",
    "13": "G59: vector shift",
    "14": "NVM function failure",
    "15": "Communication lost"
   }
  },
  {
   "table": "holding_register",
   "address": 10539,
   "documented": "10539 (in 10536-10551)",
   "name": "Warning alarm bits 48-63",
   "description": "Word 4 of the warning alarm bit array; bit 0 = alarm 48.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Genset low frequency",
    "1": "Genset high frequency",
    "2": "Genset low RPM",
    "3": "Genset high RPM",
    "4": "Genset low voltage",
    "5": "Genset high voltage",
    "6": "Low oil pressure",
    "7": "High oil pressure",
    "8": "Low engine temperature",
    "9": "High engine temperature",
    "10": "Low fuel level",
    "11": "High fuel level",
    "12": "Low oil temperature",
    "13": "High oil temperature",
    "14": "Low canopy temperature",
    "15": "High canopy temperature"
   }
  },
  {
   "table": "holding_register",
   "address": 10542,
   "documented": "10542 (in 10536-10551)",
   "name": "Warning alarm bits 96-111",
   "description": "Word 7 of the warning alarm bit array; bit 0 = alarm 96.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Low battery voltage",
    "1": "High battery voltage",
    "2": "Fail to start",
    "3": "Fail to stop",
    "4": "Low charge voltage",
    "5": "J1939 ECU error",
    "6": "High air inlet temperature",
    "7": "Low coolant level",
    "8": "Voltage unbalance",
    "9": "Current unbalance",
    "10": "Over current",
    "11": "Over load",
    "12": "Reverse power",
    "13": "Genset phase order fail",
    "14": "Mains phase order fail",
    "15": "Genset CB fail to close"
   }
  },
  {
   "table": "holding_register",
   "address": 10543,
   "documented": "10543 (in 10536-10551)",
   "name": "Warning alarm bits 112-127",
   "description": "Word 8 of the warning alarm bit array; bit 0 = alarm 112.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Genset CB fail to open",
    "1": "Mains CB fail to close",
    "2": "Mains CB fail to open",
    "3": "Device address fail",
    "4": "Comm. bus error",
    "5": "Excitation lost",
    "6": "Service 1 request",
    "7": "Service 2 request",
    "8": "Service 3 request",
    "9": "G59: no mains frequency",
    "10": "G59: mains frequency fail",
    "11": "G59: mains reverse power",
    "12": "G59: ROCOF df/dt",
    "13": "G59: vector shift",
    "14": "NVM function failure",
    "15": "Communication lost"
   }
  },
  {
   "table": "holding_register",
   "address": 10604,
   "documented": "10604",
   "name": "Unit operation status",
   "description": "Current step of the genset control sequence.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Genset at rest",
    "1": "Wait before fuel",
    "2": "Engine preheat",
    "3": "Wait oil flash off",
    "4": "Crank rest",
    "5": "Cranking",
    "6": "Engine run idle speed",
    "7": "Engine heating",
    "8": "Running off load",
    "9": "Synchronizing to mains",
    "10": "Load transfer to genset",
    "11": "Gen CB activation",
    "12": "Genset CB timer",
    "13": "Master genset on load",
    "14": "Peak lopping",
    "15": "Power exporting",
    "16": "Slave genset on load",
    "17": "Synchronizing back to mains",
    "18": "Load transfer to mains",
    "19": "Mains CB activation",
    "20": "Mains CB timer",
    "21": "Stop with cooldown",
    "22": "Cooling down",
    "23": "Engine stop idle speed",
    "24": "Immediate stop",
    "25": "Engine stopping"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10605,
   "documented": "10605",
   "name": "Unit mode",
   "description": "Selected operating mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "STOP",
    "2": "RUN (D-500) / MANUAL (D-700)",
    "4": "AUTO",
    "8": "TEST"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10607,
   "documented": "10607",
   "name": "GOV control output",
   "description": "Governor (speed) control output level.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10608,
   "documented": "10608",
   "name": "AVR control output",
   "description": "Voltage regulator control output level.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10609,
   "documented": "10609",
   "name": "Device identity",
   "description": "Model code, e.g. 0xD500 for a D-500.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10610,
   "documented": "10610",
   "name": "Hardware version",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 10611,
   "documented": "10611",
   "name": "Software version",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 11173,
   "documented": "11173",
   "name": "Battery charge current",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 11555,
   "documented": "11555 (in 11555-11568)",
   "name": "Function flags 0-15",
   "description": "Output functions currently active (fuel, crank, contactors).",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Fuel",
    "1": "Horn",
    "2": "Crank",
    "3": "Stop solenoid",
    "4": "Genset contactor",
    "5": "Mains contactor",
    "6": "Idle speed",
    "7": "Preheat",
    "8": "Alternate crank",
    "9": "Fuel main winding",
    "10": "Genset close pulse",
    "11": "Genset open pulse",
    "12": "Genset UV coil",
    "13": "Mains close pulse",
    "14": "Mains open pulse",
    "15": "Mains UV coil"
   }
  },
  {
   "table": "holding_register",
   "address": 11557,
   "documented": "11557 (in 11555-11568)",
   "name": "Function flags 32-47",
   "description": "Readiness, mains-fail and engine-running flags.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Bus bar UV coil",
    "1": "Load shedding",
    "2": "Load add",
    "3": "Load subtract",
    "4": "Service 1 request",
    "5": "Service 2 request",
    "6": "Service 3 request",
    "7": "Mains phase order fail",
    "8": "Genset phase order fail",
    "9": "Auto ready",
    "10": "Weekly schedule on",
    "11": "Exerciser on",
    "12": "Mains fail",
    "13": "Program mode active",
    "14": "Engine running",
    "15": "Genset voltage OK"
   }
  },
  {
   "table": "holding_register",
   "address": 11558,
   "documented": "11558 (in 11555-11568)",
   "name": "Function flags 48-63",
   "description": "Summary alarm flags and the active mode.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Alarm check enable",
    "1": "Oil pressure OK",
    "2": "Shutdown alarm",
    "3": "Loaddump alarm",
    "4": "Warning alarm",
    "5": "Shutdown or loaddump",
    "6": "Shutdown or loaddump or warning",
    "7": "Test mode",
    "8": "Auto mode",
    "9": "Manual mode",
    "10": "Off mode",
    "11": "Not in auto",
    "12": "Genset at rest",
    "13": "Waiting before fuel",
    "14": "Preheating",
    "15": "Waiting oil flash off"
   }
  }
 ],
 "integration": {
  "summary": "Read 10604 (operation status), 10605 (mode) and the summary flags at 11558 with function 3, then 10338-10341 for frequencies and battery voltage. Remote control is done by writing a single bit to 8193 to simulate a panel key (Stop, Run/Manual, Auto, Test).",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 10604,
    "why": "Genset sequence state"
   },
   {
    "table": "holding_register",
    "address": 10605,
    "why": "STOP / RUN / AUTO / TEST mode"
   },
   {
    "table": "holding_register",
    "address": 11558,
    "why": "Shutdown, loaddump and warning summary flags"
   },
   {
    "table": "holding_register",
    "address": 11557,
    "why": "Mains fail and engine running flags"
   },
   {
    "table": "holding_register",
    "address": 10339,
    "why": "Genset frequency"
   },
   {
    "table": "holding_register",
    "address": 10341,
    "why": "Battery voltage"
   },
   {
    "table": "holding_register",
    "address": 10376,
    "why": "Engine speed"
   },
   {
    "table": "holding_register",
    "address": 8193,
    "why": "Remote key presses"
   }
  ],
  "enable": "Set a Modbus slave address (1-240). For RS-485 set 'RS-485 Enable' to 1 and pick a baud rate; for Ethernet set 'Ethernet Enable' to 1, the Modbus TCP port (usually 502) and the IP, gateway and subnet; the first User IP Mask should be 255.255.255.0.",
  "watchdog": null,
  "quirks": [
   "Only functions 3, 6 and 16 are supported; status bits are read from holding registers.",
   "A read returns at most 16 registers; asking for more silently returns only the first 16.",
   "Writing a read-only register returns exception code 10 (write protection).",
   "Addresses are decimal and used as-is; do not add 40001 or subtract 1."
  ],
  "setup": [
   "Serial: 8 data bits, no parity, 1 stop bit, RTU mode, baud 2400-115200 selectable.",
   "Every unit on one RS-485 line needs its own slave address; over TCP keep the default address 1 unless the gateway needs otherwise.",
   "For GPRS the manual says to use Modbus TCP port 80."
  ],
  "gotchas": [
   "These controllers start a real engine and operate the mains and genset breakers. Make sure the set and switchgear are safe before simulating Run, Test, GCB or MCB key presses.",
   "The pushbutton register mimics a key press; check 10605 afterwards and press Auto again if the set must stay ready for a mains failure."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/datakom/d-500",
 "address_note": "address = 0-based Modbus wire (PDU) address; documented = as printed in the source.",
 "note": "Re-typed from the manufacturer's public documentation (see source) and verified against it. Registers vary by firmware and options; verify against the live device before writing."
}
