{
 "manufacturer": "Intesis (HMS Networks)",
 "manufacturer_slug": "intesis",
 "model": "INMBSFGL001I000 Fujitsu domestic AC to Modbus RTU gateway",
 "model_slug": "inmbsfgl001i000",
 "short_model": "INMBSFGL001I000 Fujitsu",
 "aliases": [
  "INMBSFGL001I000",
  "FJ-AC-MBS-1",
  "Intesis Fujitsu domestic Modbus"
 ],
 "equipment_type": "VRF / split AC gateway",
 "applies_to": "One Fujitsu domestic (RAC) or compatible VRF indoor unit, connected to the CN65/CN12/CN6 socket on the indoor board via INMBSFGL001I000, user manual v1.5 (01/2024).",
 "summary": "Modbus RTU server that plugs into the CN65/CN12/CN6 connector on a Fujitsu indoor unit's control board with the supplied cable. Holding registers give on/off, mode, fan (up to 6 speeds), both vanes, economy, antifreeze, setpoint and limits, room and return temperatures, filter sign, alarm and error code, plus window-contact and external-temperature functions.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 9600,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": 2,
  "tcp_port": null
 },
 "addressing": {
  "convention": "0-based",
  "note": "Tables give a 'protocol address' (base 0) and a 'PLC address' (base 1); the protocol address is the wire address and is used for 'documented'."
 },
 "default_word_order": null,
 "firmware": null,
 "source": {
  "title": "Intesis INMBSFGL001I000 Modbus RTU Gateway - Fujitsu Air Conditioning - User Manual",
  "doc_number": "User Manual v1.5 EN",
  "revision_date": "2024-01",
  "url": "https://www.hms-networks.com/docs/default-source/products/intesis/manuals-and-guides---manuals/user-manual-inmbsfgl001i000.pdf",
  "pages": "pp. 8-10 (registers), pp. 10-11 (temperature notes), pp. 12-14 (DIP switches), p. 14 (functions)"
 },
 "notes": [
  "The manual declares every register a 16-bit unsigned holding register; the temperature ranges listed never go below zero, so temperatures are UINT16. The 'no value' marker the manual writes as -32768 is raw 0x8000 (32768) and is listed as an enum entry. A value of 0 in the setpoint / reference registers means 'undetermined'.",
  "Temperature registers depend on the DIP SW2 positions 7-8 setting: x1 °C, x10 °C (decidegrees) or °F (no °F x10). The register-table footnote calls x10 the default, but the SW2 DIP-switch table marks x1 and °C as the defaults, so scale 1 / °C is used. Check the switch on site: if x10 is set use scale 0.1; if °F is set the values are whole °F.",
  "On this model the DIP switches are SW1 (fan speeds + baud), SW2 (address + temperature format) and SW3 (termination + bus biasing). Some lines in the manual (mechanical table, termination text) still say SW3/SW4 from other gateways; the DIP-switch tables are followed here.",
  "Fujitsu states the room temperature value is for display only and may not always match the actual room temperature.",
  "Error code enum (Fujitsu codes) not reproduced; see manual section 7.",
  "Horizontal vane (register 26): the manual lists only 1 = Position 1 and 5 = Position 5 with an ellipsis between, so values 2-4 are not listed here."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 0,
   "documented": "0",
   "name": "AC unit On/Off",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 1,
   "documented": "1",
   "name": "AC unit mode",
   "description": "Available modes depend on the indoor unit.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto",
    "1": "Heat",
    "2": "Dry",
    "3": "Fan",
    "4": "Cool"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2,
   "documented": "2",
   "name": "AC unit fan speed",
   "description": "Speed count (3-6) set on SW1; available speeds depend on the unit.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto",
    "1": "Quiet",
    "2": "Low",
    "3": "Med",
    "4": "High"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3,
   "documented": "3",
   "name": "AC unit vane position",
   "description": "Up/down vane; availability depends on the indoor unit.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Position-1 (Horizontal)",
    "2": "Position-2 (Horizontal)",
    "3": "Position-3 (Medium)",
    "4": "Position-4 (Vertical)",
    "10": "Swing"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4,
   "documented": "4",
   "name": "AC unit temperature setpoint",
   "description": "Setpoint 16..30 °C (61..86 °F). SW2 x1 °C assumed (x10: 0.1, or °F).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": {
    "0": "Undetermined",
    "32768": "Initialisation value / no value (0x8000; manual writes -32768)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5,
   "documented": "5",
   "name": "AC unit temperature reference",
   "description": "Room temperature, 18..30 °C. SW2 x1 °C assumed (x10: 0.1, or °F).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": {
    "0": "Undetermined",
    "32768": "No temperature sent from the remote controller (0x8000)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6,
   "documented": "6",
   "name": "Window contact",
   "description": "Virtual window contact written from Modbus.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Closed",
    "1": "Open"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7,
   "documented": "7",
   "name": "Gateway disablement",
   "description": "Stops the gateway passing commands; stored in NVM.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "INMBSFGL001I000 enabled",
    "1": "INMBSFGL001I000 disabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8,
   "documented": "8",
   "name": "AC remote control disablement",
   "description": "Blocks the Fujitsu wired remote.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Remote control enabled",
    "1": "Remote control disabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9,
   "documented": "9",
   "name": "AC unit operation time",
   "description": "Hours the unit has been on.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "h",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10,
   "documented": "10",
   "name": "AC unit alarm status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No alarm condition",
    "1": "Alarm condition"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 11,
   "documented": "11",
   "name": "Error code",
   "description": "Fujitsu error number (manual section 7); 65535 = communication error.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No error present",
    "65535": "Communication error (gateway or remote controller with the AC unit)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 13,
   "documented": "13",
   "name": "Open window switch-off timeout",
   "description": "Countdown after window opens before switch-off (0..30, default 30).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "min",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14,
   "documented": "14",
   "name": "Modbus RTU baud rate",
   "description": "Baud rate in use (set on DIP switches).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 15,
   "documented": "15",
   "name": "Modbus slave address",
   "description": "Range 1..63.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21,
   "documented": "21",
   "name": "Number of fan speeds",
   "description": "3..6, as set on SW1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 22,
   "documented": "22",
   "name": "External ambient temperature (Modbus)",
   "description": "Modbus room sensor; RAC caveat in gotchas. SW2 x1 °C assumed (x10: 0.1, or °F).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": {
    "32768": "Initialisation value, no external sensor value (0x8000)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23,
   "documented": "23",
   "name": "AC real temperature setpoint",
   "description": "Setpoint applied in the unit, 16..31 °C. SW2 x1 °C assumed (x10: 0.1, or °F).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24,
   "documented": "24",
   "name": "Current AC max setpoint",
   "description": "Upper setpoint limit reported by the unit. SW2 x1 °C assumed (x10: 0.1, or °F).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": {
    "32768": "Initialisation value / no value (0x8000; manual writes -32768)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 25,
   "documented": "25",
   "name": "Current AC min setpoint",
   "description": "Lower setpoint limit reported by the unit. SW2 x1 °C assumed (x10: 0.1, or °F).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": {
    "32768": "Initialisation value / no value (0x8000; manual writes -32768)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 26,
   "documented": "26",
   "name": "AC unit horizontal vane position",
   "description": "Left/right vane; manual prints 1 and 5 with an ellipsis for positions in between.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto",
    "1": "Position 1",
    "5": "Position 5",
    "10": "Swing"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 31,
   "documented": "31",
   "name": "Window contact status (feedback)",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not active",
    "1": "Active (window open)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36,
   "documented": "36",
   "name": "External On/Off disablement",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Not active",
    "1": "Active"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40,
   "documented": "40",
   "name": "Window contact On/Off disablement",
   "description": "Whether the window-contact function is in use.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Window contact disabled (not working)",
    "1": "Window contact enabled (in use)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 43,
   "documented": "43",
   "name": "Filter reset",
   "description": "Write 1 to reset the filter sign.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": {
    "1": "Reset"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 44,
   "documented": "44",
   "name": "Filter status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Off",
    "1": "Lit"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 49,
   "documented": "49",
   "name": "Device ID",
   "description": "Reads 0x0D00.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 50,
   "documented": "50",
   "name": "Software version",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 56,
   "documented": "56",
   "name": "Antifreeze operation",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Disabled",
    "1": "Enabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 64,
   "documented": "64",
   "name": "Economy",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Disabled",
    "1": "Enabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 65,
   "documented": "65",
   "name": "Input reference temperature",
   "description": "Reference temperature in use. SW2 x1 °C assumed (x10: 0.1, or °F).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": {
    "32768": "No external sensor value, no virtual temperature (0x8000)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 66,
   "documented": "66",
   "name": "Return path temperature",
   "description": "Indoor unit return-air sensor. SW2 x1 °C assumed (x10: 0.1, or °F).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": {
    "32768": "Initialisation value / no value (0x8000; manual writes -32768)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 97,
   "documented": "97",
   "name": "Block periodic sendings",
   "description": "1 = only forward Modbus writes that change the value.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Non-blocked",
    "1": "Blocked"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 98,
   "documented": "98",
   "name": "Master/Slave (gateway role)",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Slave",
    "1": "Master"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 99,
   "documented": "99",
   "name": "Reset",
   "description": "Write 1 to restart the gateway.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": {
    "1": "Reset"
   },
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Plug the supplied cable into CN65/CN12/CN6 on the indoor board, set the fan-speed count and baud on SW1 and the address on SW2, power-cycle, then poll holding registers 0-11 with function 03 and write with 06.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 0,
    "why": "On/off"
   },
   {
    "table": "holding_register",
    "address": 1,
    "why": "Mode"
   },
   {
    "table": "holding_register",
    "address": 2,
    "why": "Fan speed"
   },
   {
    "table": "holding_register",
    "address": 4,
    "why": "Setpoint"
   },
   {
    "table": "holding_register",
    "address": 5,
    "why": "Room temperature"
   },
   {
    "table": "holding_register",
    "address": 10,
    "why": "Alarm flag"
   },
   {
    "table": "holding_register",
    "address": 11,
    "why": "Error code"
   }
  ],
  "enable": "No enable step; register 7 (gateway disablement) must be 0 for commands to reach the unit.",
  "watchdog": null,
  "quirks": [
   "Temperature scale depends on DIP SW2 and the manual is inconsistent about the factory default.",
   "8-N-2 by default; 8-N-1 is auto-detected.",
   "Function 16 is accepted only with a quantity of one register; functions 3 and 4 both read the same holding registers."
  ],
  "setup": [
   "SW1 positions 1-2: number of fan speeds (3/4/5/6, default 4); positions 6-8: baud (9600 default).",
   "SW2 positions 1-6: slave address (default 1); position 7: x1/x10; position 8: °C/°F.",
   "SW3: 120 Ω termination (position 1) and bus biasing (positions 2-3, both on).",
   "DIP changes need a power cycle. The Modbus terminal is B, A, SG; EIA-485 max 1,200 m."
  ],
  "gotchas": [
   "The gateway only answers once it is connected to a powered indoor unit.",
   "Register 22 (external temperature) needs the indoor unit set to use the remote-controller thermostat (Fujitsu function 42 = 1, set by an installer) and has no effect on RAC models that need an extra comms accessory."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/intesis/inmbsfgl001i000",
 "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."
}
