WB-MAO4
Four-channel 0–10 V / PWM analog output module
Covered order codes (1)
WB-MAO4
This page describes the latest hardware revision with the latest stable firmware. If your device runs older firmware, update it where possible (see Firmware update).
- hardware revision history;
- firmware changes.

Purpose
The 4-channel analog output module controls devices using 0–10 V signals or PWM signals with a 10 V pulse amplitude, such as servo drives, air damper actuators and valve actuators. The module is controlled by a controller or PC over RS-485 using Modbus commands.
Technical specifications
| Parameter | Value |
|---|---|
| Power supply | |
| Supply voltage | 9–28 V DC |
| Power consumption |
0.3 to 2.3 W |
| Output channels | |
| Number of channels | 4 |
| Output signal in analog mode | 0…10 V |
| Output signal in PWM mode | Amplitude: 10 V; maximum frequency: 24 kHz; default frequency: 1 kHz |
| Maximum current | Rated current: 8 mA (load resistance of at least 1.3 kΩ); short-circuit current: up to 40 mA |
| Accuracy | 2 % + 20 mV (at 25 °C), 3 % + 30 mV (from −40 to +80 °C) |
| Inputs | |
| Purpose | Reading digital signals from external sensors, limit switches, etc. |
| Input type | Dry contact; inputs isolated as a group.
Input voltage: ~12 V. Current when the input is closed: ~2 mA. |
| Permissible voltage | −20 to +40 V |
| Control | |
| Control interface | RS-485 |
| Interface isolation | Non-isolated |
| Communication protocol | Modbus RTU; software-configurable address; factory settings are printed on the label |
| RS-485 interface parameters | Software-configurable; defaults:
baud rate — 9600 bit/s; data — 8 bits; parity — none (N); stop bits — 2 |
| Ready after power-on | ~2 s |
| Operating conditions | |
| Ambient air temperature | −40 to +80 °C |
| Relative humidity | Up to 95%, non-condensing |
| Climatic classification under GOST 15150-69 | O2.1* (the designation uses the Cyrillic letter O) |
| Warranty | 2 years |
| Service life | 8 years |
| Terminal blocks and wire cross-sections | |
| Recommended wire cross-section with insulated wire-end ferrules | 0.35–1 mm2 — single ferrule; 0.35–0.5 mm2 — twin ferrule |
| Standard ferrule sleeve length | 8 mm |
| Screw tightening torque | 0.2 N·m |
| Dimensions | |
| Width, DIN modules | 2 |
| Overall dimensions (L × W × H) | 36 × 90 × 58 mm |
| Weight (including box) | 80 g |
Operating principle
The device has two output control modes:
- analog 0–10 V: voltage is specified in millivolts (0…10 000);
- pulse-width modulation (PWM) with a 10 V pulse amplitude and variable duty cycle, specified as % × 100 (0…10 000):
- for a 1 % PWM duty cycle, the value is 100;
- for a 20 % PWM duty cycle, the value is 2000.
Indicators
The module has an indicator that shows its status without connecting to a controller:
- S (green) — Modbus communication status: lights up when low-voltage power is applied and flashes during polling over RS-485. On devices with events enabled in Fast Modbus ⚡ the indicator flashes more frequently than during sequential polling because events are polled faster. In bootloader mode, it flashes once per second; during firmware upload, it flashes rapidly. It is located beneath terminal B.
Installation

Mount the device on a standard 35 mm DIN rail.
The V+ GND A B terminal block, with a 3.5 mm pitch, connects the power supply and RS-485 communication bus. Correct bus wiring is essential for reliable communication; see RS-485 bus wiring and connection.
If devices on the RS-485 bus use different power supplies, their GND terminals must be interconnected. See Grounding Wiren Board devices and connecting GND and iGND.
Digital inputs activate when connected to iGND. The current is low (~2 mA), so any suitable button or switch type can be used. Cable length and cross-section are not critical for contact detection. To reduce interference from nearby power wiring, use twisted pair and connect iGND to the second conductor of the pair. More about connecting iGND/GND terminals.
Use twisted-pair cable to connect 0–10 V signals to actuators: one conductor for the signal and the other for GND.
Installation example
An installation example for the WB-MAO4 module is shown in Diagram 1.
In this example, the module controls two LED strip dimmers with 0–10 V inputs. It also reads a switch whose logic is implemented using rules on the controller. The module is powered by the controller and communicates with it over RS-485. The dimmers use a separate power supply.
WARNING: because the negative power terminal of WB-MAO4 is not isolated from the negative output terminals, you must connect the negative terminal of the module's power supply to the negative terminal of the load's power supply using a conductor with a cross-section of at least 1.5 mm2 .
In this example, the module is powered by a Wiren Board 6 controller, so connect the negative terminal of the controller's power supply to the negative terminal of the load's power supply.
Wiren Board controller web interface

Selecting a template
To display the device on the Devices tab of the Wiren Board controller web interface, add it automatically by scanning for Wiren Board devices on RS-485 or manually by selecting the template WB-MAO4.
Controlling the device and viewing values
The web interface allows you to control device outputs and view readings. To change the displayed channels, edit the device configuration in the wb-mqtt-serial driver settings.
Configuration

Configuration methods
- Set the parameters in the Wiren Board controller web interface under Settings → Configs → Serial devices driver configuration. If these items are unavailable, check your access level.
- Write settings to the Modbus registers of the module from the controller console using the utility modbus-utils-rpc or modbus_client.
- Without a Wiren Board controller, use the Wiren Board device web configurator or other software; see Using Wiren Board Modbus devices without a controller. You will need a computer with an interface converter: USB-RS485.
Our devices are continually improved. If settings described in this manual are missing, update the device firmware and controller software.
Analog output configuration
You can change the following parameters:
- Outputs Mode — select 0–10 V or PWM mode.
- PWM Frequency Factor — the PWM factor. The resulting frequency is calculated as
24 kHz / Factor.
Output control
Setting an output voltage (in 0–10 V mode) or duty cycle (in PWM mode) immediately applies that value to the corresponding output.
Outputs can also be controlled as dimmers:
- switch them on or off;
- set the output level as a percentage of the configured range;
- set the rate of change of the output level.

Output parameters:
- Voltage at 1% dimming level (mV) — the output value corresponding to a level of 1 %.
- Voltage at 100% dimming level (mV) — the output value corresponding to a level of 100 %.
- Dimming level decrement rate (ms/%) / Dimming level increment rate (ms/%) — the rate at which the output signal level decreases or increases when changing from one value to another.
- Action repeat time (ms) — continuous actions repeat at the specified interval in milliseconds.
The increase/decrease time may be zero. This disables smooth transitions and applies the level immediately.
Mapping button events to outputs
Momentary pushbutton


WB-MAO4 has 3 digital inputs for buttons. Each button supports 4 press types: short, long, double, and short-then-long. This gives 12 events, each with two mapping parameters: the target output and the action type.
Output number selects the output affected by the event. Choose one output, all outputs, or none to ignore the event.
Output action selects what the event does:
- Off;
- On;
- Toggle;
- Increase level;
- Decrease level;
- Increase/decrease level. The action alternates each time the button is pressed.
Some combinations of events and actions have no practical meaning and are ignored. The controller driver template takes these restrictions into account.
| Available event and action combinations | ||||||
|---|---|---|---|---|---|---|
| Press type | Switch output off | Switch output on | Toggle output state | Increase level | Decrease level | Increase/decrease level |
| Single press | One / all outputs | One / all outputs | One output | One / all outputs | One / all outputs | Unavailable |
| Long press | One / all outputs | One / all outputs | One output | One / all outputs | One / all outputs | One output |
| Double press | One / all outputs | One / all outputs | One output | One / all outputs | One / all outputs | Unavailable |
| Short-then-long press | One / all outputs | One / all outputs | One output | One / all outputs | One / all outputs | One output |
Dimming step for single and double presses
Available from firmware 2.9.0
For increase-level and decrease-level actions assigned to a short or double press, you can specify the level adjustment step. Configure it separately for each channel and for short and double presses.
On a short or double press, the module changes the target level by the specified step. The transition is smooth and follows the settings of Dimming level increment rate (ms/%) and Dimming level decrement rate (ms/%).
Latching switch
Conventional latching switches can be used instead of push buttons. Select the Latching switch input mode. Two event types are available: switch on (closed) and switch off (open).
Output number selects the output affected by the event. Choose one output, all outputs, or none to ignore the event.
The following output actions are available:
- On;
- Off;
- Toggle.
Encoder support

Available from firmware 2.9.0
One AB quadrature (incremental) encoder can be connected to the WB-MAO4 inputs: Encoder 1 is connected to inputs 1/2. Input 3 is not part of the encoder and remains an ordinary digital input.
For each encoder input, configure Debounce time. Recommended debounce time: 2–5 ms; use 2 ms for fast rotation.
For modules manufactured before batch v2.9E, the encoder pulse rate must not exceed 20 pulses per second; otherwise counting errors may occur. We recommend encoders with up to 20 pulses per revolution and designing the control system so that rotation faster than 1 revolution per second is rare or impossible. This restriction does not apply from batch v2.9E onward.
AB encoders

AB encoders can control parameters such as lighting brightness.
Connect three wires: A, B, GND. Shaft position is available in the channel Encoder position and can range from −2147483648 to 2147483647. When either boundary is reached, the value wraps to the opposite boundary and counting continues.
Many encoders also have a Switch output that closes to GND when the shaft is pressed. Connect it to any free input and process it as an ordinary button.
Channel Encoder position is writable, allowing an initial position to be set.
Controlling the dimmer with an encoder
Open device settings and select the tab Encoders. Configure each encoder separately under Encoder 1.
In Encoder connection type, select AB.
Parameter Pulses per step sets how many A/B input pulses correspond to one logical encoder step.
In Controlled channel, select Control disabled or one of channels 1–4 to be controlled by encoder rotation.
Parameter Level adjustment step (%) sets the change per logical encoder step.
Parameter Behaviour below minimum level determines whether reducing the level below its configured minimum switches the channel off or retains the minimum level.
Lighting scenes
Scenes group several channels and assign actions to them. A scene can also contain a single channel.
For example, you need two lighting modes in a room:
- day mode — rapid switching on at full brightness / rapid switching off;
- night mode — slow switching on at low brightness / slow switching off.
Define 2 scenes and configure their actions:
- Scene 1
- when the scene is switched on: switch on and set brightness to 100 %. Brightness transition time: 10 ms/%.
- when the scene is switched off: switch off. Brightness transition time: 10 ms/%.
- Scene 2
- when the scene is switched on: switch on and set brightness to 10 %. Brightness transition time: 200 ms/%.
- when the scene is switched off: switch off. Brightness transition time: 200 ms/%.
Scene 1 now provides day mode and Scene 2 provides night mode. Scene switching can also be mapped to button presses: for example, a short press toggles Scene 1 and a double press toggles Scene 2.
Output channels with automatic switch-on
Available from firmware 2.9.0 Each output-control channel has an additional auto-on channel. It mirrors the ordinary channel, but writing a value greater than zero also switches the associated output on.
Behaviour:
- writing > 0 — switches the output on and sets the written value;
- Writing 0 — switches the channel off or resets its level in the same way as the ordinary channel;
- reading returns the current value of the corresponding parameter.
Auto-on channels are useful for scenarios and external integrations: one command sets the required level without a separate write to the coil to switch the channel on.
Safety Mode

Safety Mode can stop a process if control of the module is lost, for example because the RS-485 cable is severed. Account for communication loss when designing control systems.
The Safety Mode timer restarts after each successfully received and processed Modbus request. The module enters Safety Mode when the configured time expires and resumes normal operation when communication is restored. The default timeout is 10 seconds.
Each output has a configurable fail-safe state and can be configured to enter it on communication loss.
Input control behaviour can be configured:
- Do not block — configured input control remains available.
- Block in Safety Mode — inputs cannot control outputs during fail-safe operation.
- Allow only in Safety Mode — configured input control is available only in Safety Mode, not during normal operation.
Output states at power-up

For each channel, select its power-on behaviour:
- Switch off — after switching off, the channel can be switched on using its corresponding switch or by changing its level from 0 % to N %;
- Restore previous state — restores the channel state before the power loss;
- On;
- Set level — switches the channel on and sets the specified level. Setting 0 % switches the channel off; changing the level from 0 % to N % switches it on.
Modbus operation
Wiren Board devices use Modbus RTU. The physical connection uses the RS-485 interface.
interface. All main commands for reading and writing one or multiple registers are supported. See the list in the Modbus protocol description.
The module can be configured:
- in the Wiren Board controller web interface;
- using the Wiren Board device web configurator;
- using third-party software.
Default port settings
| Value default |
Parameter name in the web interface |
Parameter |
|---|---|---|
| 9600 | Baud rate | Baud rate, bit/s |
| 8 | Data bits | Number of data bits |
| None | Parity | Parity |
| 2 | Stop bits | Number of stop bits |
In current firmware, setting Stop bits is optional: the device also operates correctly when its number of stop bits differs from the Modbus master setting.
For a faster response, we recommend increasing the baud rate to 115200 bit/s; see Communication parameter settings.
Modbus address

Each device on the bus must have a unique address from 1 to 247. The factory-assigned address is printed on labels on the enclosure (top cover, side or underside). Devices in a production batch are assigned different addresses, so devices in one order will usually have different addresses.
For instructions on finding, changing or resetting the address, see Wiren Board device Modbus address.
Remote smooth level adjustment
Available from firmware 2.9.0
Without this feature, the master must implement smooth remote level adjustment by writing a new level to the register every few milliseconds. This adds traffic to the RS-485 bus and lengthens the polling cycle for other devices. With Auto-Change , the master writes an action to a Modbus register once, and the module then changes the level periodically, just as when a local button is held down.
Action register values:
- 0 — stop smooth adjustment;
- 1 — decrease the level;
- 2 — increase the level;
- 3 — alternate between decreasing and increasing the level. The initial direction is opposite to the last local long-press direction on this channel.
Smooth adjustment stops when the level reaches 1 % or 100 %, when the channel is switched off through its coil register, or when a lighting scene changes this channel's level. On stopping, the module resets the action register to 0.
The adjustment speed follows the local button action-repeat setting, which also determines adjustment while an input is held.
Fast Modbus extension
Fast Modbus extends standard Modbus with rapid discovery of Wiren Board devices on RS-485 and event polling.
These features are enabled by a special command from the master, so Wiren Board devices remain compatible with third-party equipment.
Not every register supports event generation. Check the register map: event-capable registers are marked with ⚡. See Fast Modbus.
Modbus register map
Description
| RO / RW | Read only / Read/Write |
| Shown in bold | Default register value |
| xN | Multiply the register value by this factor to obtain the value in the stated units.
If omitted, assume 1 |
| ⚡ | This register supports data transmission through Fast Modbus events. |
| FW | Firmware version that introduced the register. Blank means it has always been available. |
| Error: | Value on error |
| Grey cell | Service register: its purpose, format and contents may change in newer firmware versions |
| Address | Register parameters | Channel | Description | Values | FW | |||
|---|---|---|---|---|---|---|---|---|
| Dec | Hex | Type | Access | Format | ||||
| Output control by setting the voltage in millivolts or the PWM duty cycle | ||||||||
| 0 | 0x0000 | Holding | RW | u16 | Channel 1 | Analog mode: channel voltage in millivolts PWM mode: duty cycle in steps of 0.01% |
0 - 10000 (0) | |
| 1 | 0x0001 | Channel 2 | ||||||
| 2 | 0x0002 | Channel 3 | ||||||
| 3 | 0x0003 | Channel 4 | ||||||
| Output parameters | ||||||||
| 9 | 0x0009 | Holding | RW | u16 | All channels | Output PWM frequency in mode 0 | 1 - 240 (24) F = 24 kHz / value |
|
| 10 | 0x000A | Holding | RW | u16 | All channels | Output mode |
0 — PWM mode with a 10 V amplitude 1 — analog 0–10 V mode |
|
| Output control through the dimmer | ||||||||
| 16 | 0x0010 | Coil ⚡ | RW | u8 | Channel 1 | Channel state (off/on) | 0 - 1 (0) | 2.4.0 |
| 17 | 0x0011 | Channel 2 | ||||||
| 18 | 0x0012 | Channel 3 | ||||||
| 19 | 0x0013 | Channel 4 | ||||||
| 16 | 0x0010 | Holding ⚡ | RW | u16 | Channel 1 | Level in percent % | 0 - 100 (0) | 2.4.0 |
| 17 | 0x0011 | Channel 2 | ||||||
| 18 | 0x0012 | Channel 3 | ||||||
| 19 | 0x0013 | Channel 4 | ||||||
| 20 | 0x0014 | Holding ⚡ | RW | u16 | Channel 1 | Auto-on level channel. Writing a value > 0 switches on the associated channel and sets its level; writing 0 switches off its coil register | 0 - 100 (0) | 2.9.0 |
| 21 | 0x0015 | Channel 2 | ||||||
| 22 | 0x0016 | Channel 3 | ||||||
| 23 | 0x0017 | Channel 4 | ||||||
| 24 | 0x0018 | Holding ⚡ | RW | u16 | Channel 1 | Remote smooth channel level adjustment | 0 - stop 1 - decrease 2 - increase 3 - increase/decrease |
2.9.0 |
| 25 | 0x0019 | Channel 2 | ||||||
| 26 | 0x001A | Channel 3 | ||||||
| 27 | 0x001B | Channel 4 | ||||||
| 912 | 0x0390 | Holding | RW | u16 | Channel 1 | Output voltage at a level of 1 %. From FW 2.8.0, the default value is 100 (previously 0) | 0 - 10000 (100) | 2.4.0 |
| 913 | 0x0391 | Channel 2 | ||||||
| 914 | 0x0392 | Channel 3 | ||||||
| 915 | 0x0393 | Channel 4 | ||||||
| 928 | 0x03A0 | Holding | RW | u16 | Channel 1 | Output voltage at a level of 100 % | 0 - 10000 (10000) | 2.4.0 |
| 929 | 0x03A1 | Channel 2 | ||||||
| 930 | 0x03A2 | Channel 3 | ||||||
| 931 | 0x03A3 | Channel 4 | ||||||
| 944 | 0x03B0 | Holding | RW | u16 | Channel 1 | During smooth transitions, the level decreases by 1% in the specified time (ms). If the time is zero, the level decreases immediately | 0 - 500 (20) | 2.4.0 |
| 945 | 0x03B1 | Channel 2 | ||||||
| 946 | 0x03B2 | Channel 3 | ||||||
| 947 | 0x03B3 | Channel 4 | ||||||
| 960 | 0x03C0 | Holding | RW | u16 | Channel 1 | During smooth transitions, the level increases by 1% in the specified time (ms). If the time is zero, the level increases immediately | 0 - 500 (20) | 2.4.0 |
| 961 | 0x03C1 | Channel 2 | ||||||
| 962 | 0x03C2 | Channel 3 | ||||||
| 963 | 0x03C3 | Channel 4 | ||||||
| Button/switch event configuration | ||||||||
| 416 | 0x01A0 | Holding | RW | u16 | Input 1 | Input operating mode This register is unavailable before firmware 2.5.0; all inputs operate in push-button mode |
0 - pushbutton 1 — latching switch |
2.5.0 |
| 417 | 0x01A1 | Input 2 | ||||||
| 418 | 0x01A2 | Input 3 | ||||||
| 768 | 0x0300 | Holding | RW | u16 | Input 1 | Output on which the short-press action is performed |
0 - ignore event |
2.4.0 |
| 769 | 0x0301 | Input 2 | ||||||
| 770 | 0x0302 | Input 3 | ||||||
| 784 | 0x0310 | Holding | RW | u16 | Input 1 | Output affected by a long press | 2.4.0 | |
| 785 | 0x0311 | Input 2 | ||||||
| 786 | 0x0312 | Input 3 | ||||||
| 800 | 0x0320 | Holding | RW | u16 | Input 1 | Output affected by a double press | 2.4.0 | |
| 801 | 0x0321 | Input 2 | ||||||
| 802 | 0x0322 | Input 3 | ||||||
| 816 | 0x0330 | Holding | RW | u16 | Input 1 | Output affected by a short followed by a long press | 2.4.0 | |
| 817 | 0x0331 | Input 2 | ||||||
| 818 | 0x0332 | Input 3 | ||||||
| 704 | 0x02C0 | Holding | RW | u16 | Input 1 | Output on which the action is performed in the off position Select the Latching switch input mode |
2.5.0 | |
| 705 | 0x02C1 | Input 2 | ||||||
| 706 | 0x02C2 | Input 3 | ||||||
| 720 | 0x02D0 | Holding | RW | u16 | Input 1 | Output on which the action is performed in the on position Select the Latching switch input mode |
2.5.0 | |
| 721 | 0x02D1 | Input 2 | ||||||
| 722 | 0x02D2 | Input 3 | ||||||
| 832 | 0x0340 | Holding | RW | u16 | Input 1 | Short-press action | 0 — switch the output off 1 — switch the output on 2 — toggle the output 3 — decrease the level 4 — increase the level 5 — increase/decrease the level |
2.4.0 |
| 833 | 0x0341 | Input 2 | ||||||
| 834 | 0x0342 | Input 3 | ||||||
| 848 | 0x0350 | Holding | RW | u16 | Input 1 | Long-press action | 2.4.0 | |
| 849 | 0x0351 | Input 2 | ||||||
| 850 | 0x0352 | Input 3 | ||||||
| 864 | 0x0360 | Holding | RW | u16 | Input 1 | Double-press action | 2.4.0 | |
| 865 | 0x0361 | Input 2 | ||||||
| 866 | 0x0362 | Input 3 | ||||||
| 880 | 0x0370 | Holding | RW | u16 | Input 1 | Short-then-long-press action | 2.4.0 | |
| 881 | 0x0371 | Input 2 | ||||||
| 882 | 0x0372 | Input 3 | ||||||
| 736 | 0x02E0 | Holding | RW | u16 | Input 1 | Action in the OFF position Select the Latching switch input mode |
2.5.0 | |
| 737 | 0x02E1 | Input 2 | ||||||
| 738 | 0x02E2 | Input 3 | ||||||
| 752 | 0x02F0 | Holding | RW | u16 | Input 1 | Action in the ON position Select the Latching switch input mode |
2.5.0 | |
| 753 | 0x02F1 | Input 2 | ||||||
| 754 | 0x02F2 | Input 3 | ||||||
| 896 | 0x0380 | Holding | RW | u16 | Output 1 | Continuous action repeat period | 5 - 500 (20) | 2.4.0 |
| 897 | 0x0381 | Output 2 | ||||||
| 898 | 0x0382 | Output 3 | ||||||
| 899 | 0x0383 | Output 4 | ||||||
| Input states and press counters | ||||||||
| 0 | 0x0000 | Discrete Input | RO | bool | Input 1 | State |
0 — open, |
|
| 1 | 0x0001 | Input 2 | ||||||
| 2 | 0x0002 | Input 3 | ||||||
| 32 | 0x0020 | Input ⚡ | RO | u16 | Input 1 | Contact closure counter | 0 − 65535 with wraparound |
|
| 33 | 0x0021 | Input 2 | ||||||
| 34 | 0x0022 | Input 3 | ||||||
| 464 | 0x01D0 | Input ⚡ | RO | u16 | Input 1 | Short press counter | 0 − 65535 with wraparound |
2.3.0 |
| 465 | 0x01D1 | Input 2 | ||||||
| 466 | 0x01D2 | Input 3 | ||||||
| 480 | 0x01E0 | Input ⚡ | RO | u16 | Input 1 | Long press counter | 0 − 65535 with wraparound |
2.3.0 |
| 481 | 0x01E1 | Input 2 | ||||||
| 482 | 0x01E2 | Input 3 | ||||||
| 496 | 0x01F0 | Input ⚡ | RO | u16 | Input 1 | Double press counter | 0 − 65535 with wraparound |
2.3.0 |
| 497 | 0x01F1 | Input 2 | ||||||
| 498 | 0x01F2 | Input 3 | ||||||
| 512 | 0x0200 | Input ⚡ | RO | u16 | Input 1 | Short-then-long press counter | 0 − 65535 with wraparound |
2.3.0 |
| 513 | 0x0201 | Input 2 | ||||||
| 514 | 0x0202 | Input 3 | ||||||
| Press type detection | ||||||||
| 1100 | 0x044C | Holding | RW | u16 | Input 1 | Long press time
A press lasting longer than this value is considered long |
ms 500 – 5000 (1000) |
2.3.0 |
| 1101 | 0x044D | Input 2 | ||||||
| 1102 | 0x044E | Input 3 | ||||||
| 1140 | 0x0474 | Holding | RW | u16 | Input 1 | Second press waiting time
If no second press occurs within this time, the press is treated as a single press. 0 disables all press types except short and long presses |
ms 0 – 2000 (300) |
2.3.0 |
| 1141 | 0x0475 | Input 2 | ||||||
| 1142 | 0x0476 | Input 3 | ||||||
| 1160 | 0x0488 | Holding | RW | u16 | Input 1 | Debounce time
Must be 5–10 times shorter than the second-press waiting time. If double presses are disabled, any value can be used. For an encoder, 2–5 ms is recommended. |
ms 2 – 2000 (50) |
2.3.0 |
| 1161 | 0x0489 | Input 2 | ||||||
| 1162 | 0x048A | Input 3 | ||||||
| Short-press dimming step | ||||||||
| 1200 | 0x04B0 | Holding | RW | u16 | Input 1 | Level adjustment step for the controlled channel on a short press. Applies to increase-level and decrease-level actions | % 1 – 100 (1) |
2.9.0 |
| 1201 | 0x04B1 | Input 2 | ||||||
| 1202 | 0x04B2 | Input 3 | ||||||
| 1220 | 0x04C4 | Holding | RW | u16 | Input 1 | Level adjustment step for the controlled channel on a double press. Applies to increase-level and decrease-level actions | % 1 – 100 (1) |
2.9.0 |
| 1221 | 0x04C5 | Input 2 | ||||||
| 1222 | 0x04C6 | Input 3 | ||||||
| Safety Mode | ||||||||
| 8 | 0x0008 | Holding | RW | u16 | Communication loss timeout before entering safe mode | s 1 - 65534 (10) |
2.5.0 | |
| 640 | 0x0280 | Holding | RW | u16 | Input 1 | Input control in Safety Mode |
0 - do not block |
2.5.0 |
| 641 | 0x0281 | Input 2 | ||||||
| 642 | 0x0282 | Input 3 | ||||||
| 648 | 0x0288 | Holding | RW | u16 | Channel 1 | Channel action on entering Safety Mode |
0 - do nothing |
2.5.0 |
| 649 | 0x0289 | Channel 2 | ||||||
| 650 | 0x028A | Channel 3 | ||||||
| 651 | 0x028B | Channel 4 | ||||||
| 656 | 0x0290 | Holding | RW | u16 | Channel 1 | Channel level on entering Safety Mode (only if action 3 is selected). From FW 2.8.0, a level of 0% can be set to switch the channel off. A level > 0% switches it on | % 0 - 100 (50) |
2.5.0 |
| 657 | 0x0291 | Channel 2 | ||||||
| 658 | 0x0292 | Channel 3 | ||||||
| 659 | 0x0293 | Channel 4 | ||||||
| Dimmer power-on behaviour | ||||||||
| 664 | 0x0298 | Holding | RW | u16 | Channel 1 | Channel action at dimmer power-on |
0 - switch off |
2.5.0 |
| 665 | 0x0299 | Channel 2 | ||||||
| 666 | 0x029A | Channel 3 | ||||||
| 667 | 0x029B | Channel 4 | ||||||
| 672 | 0x02A0 | Holding | RW | u16 | Channel 1 | Channel level when power is applied to the dimmer (only if action 3 is selected). From FW 2.8.0, a level of 0% can be set to switch the channel off. A level > 0% switches it on | % 0 - 100 (50) |
2.5.0 |
| 673 | 0x02A1 | Channel 2 | ||||||
| 674 | 0x02A2 | Channel 3 | ||||||
| 675 | 0x02A3 | Channel 4 | ||||||
| Lighting scenes | ||||||||
| 32 | 0x0020 | Coil ⚡ | RW | bool | Scene 1 | Scene lighting control 0 — scene lighting off |
0, 1 (0) | 2.5.0 |
| 33 | 0x0021 | Scene 2 | ||||||
| 34 | 0x0022 | Scene 3 | ||||||
| 35 | 0x0023 | Scene 4 | ||||||
| 36 | 0x0024 | Scene 5 | ||||||
| 37 | 0x0025 | Scene 6 | ||||||
| 38 | 0x0026 | Scene 7 | ||||||
| 39 | 0x0027 | Scene 8 | ||||||
| 1264 | 0x04F0 | Holding | RW | u16 | Scene 1 | Condition for scene lighting to be on 0 — scene lighting is on if at least one channel used in the scene is on |
0, 1 (0) | 2.5.0 |
| 1265 | 0x04F1 | Scene 2 | ||||||
| 1266 | 0x04F2 | Scene 3 | ||||||
| 1267 | 0x04F3 | Scene 4 | ||||||
| 1268 | 0x04F4 | Scene 5 | ||||||
| 1269 | 0x04F5 | Scene 6 | ||||||
| 1270 | 0x04F6 | Scene 7 | ||||||
| 1271 | 0x04F7 | Scene 8 | ||||||
The following register addresses configure scene 1. For other scenes, add (scene_number - 1) * 64. scene_number ranges from 1 to 8
| ||||||||
| 1280 | 0x0500 | Holding | RW | u16 | Channel 1 | Channel action when scene lighting is switched on 0 — do nothing; the channel is not used in the scene |
0, 2, 3 (0) | 2.5.0 |
| 1281 | 0x0501 | Channel 2 | ||||||
| 1282 | 0x0502 | Channel 3 | ||||||
| 1283 | 0x0503 | Channel 4 | ||||||
| 1288 | 0x0508 | Holding | RW | u16 | Channel 1 | Channel transition time when scene lighting is switched on | ms/% 0 - 500 (20) |
2.5.0 |
| 1289 | 0x0509 | Channel 2 | ||||||
| 1290 | 0x050A | Channel 3 | ||||||
| 1291 | 0x050B | Channel 4 | ||||||
| 1296 | 0x0510 | Holding | RW | u16 | Channel 1 | Channel level to apply when scene lighting is switched on, if the corresponding channel action is selected | % 1 - 100 (50) |
2.5.0 |
| 1297 | 0x0511 | Channel 2 | ||||||
| 1298 | 0x0512 | Channel 3 | ||||||
| 1299 | 0x0513 | Channel 4 | ||||||
| 1312 | 0x0520 | Holding | RW | u16 | Channel 1 | Channel action when scene lighting is switched off 0 — do nothing; the channel is not used in the scene |
0, 1, 3 (0) | 2.5.0 |
| 1313 | 0x0521 | Channel 2 | ||||||
| 1314 | 0x0522 | Channel 3 | ||||||
| 1315 | 0x0523 | Channel 4 | ||||||
| 1320 | 0x0528 | Holding | RW | u16 | Channel 1 | Channel transition time when scene lighting is switched off | ms/% 0 - 500 (20) |
2.5.0 |
| 1321 | 0x0529 | Channel 2 | ||||||
| 1322 | 0x052A | Channel 3 | ||||||
| 1323 | 0x052B | Channel 4 | ||||||
| 1328 | 0x0530 | Holding | RW | u16 | Channel 1 | Channel level to apply when scene lighting is switched off, if the corresponding channel action is selected | % 1 - 100 (50) |
2.5.0 |
| 1329 | 0x0531 | Channel 2 | ||||||
| 1330 | 0x0532 | Channel 3 | ||||||
| 1331 | 0x0533 | Channel 4 | ||||||
| Encoder support | ||||||||
| 364 | 0x016C | Input ⚡ | RO | u16 | Encoder | Encoder step counter, accounting for the Pulses per step parameter | 0 - 65535 | 2.9.0 |
| 368 | 0x0170 | Holding | RW | s32 | Encoder | Encoder position in pulses. Writable to set an initial value | −2147483648 - 2147483647 (0) | |
| 376 | 0x0178 | Holding | RW | u16 | Encoder | Encoder connection type.
When connecting an encoder, reduce input debounce time (registers 1160–1162) to 2–5 ms |
0 - unused 1 - AB type | |
| 384 | 0x0180 | Holding | RW | u16 | Encoder | Pulses per logical encoder step | 1 - 65535 (4) | |
| 388 | 0x0184 | Holding | RW | u16 | Encoder | Controlled channel | 0 - control disabled 1 - channel 1 2 - channel 2 3 - channel 3 4 - channel 4 | |
| 392 | 0x0188 | Holding | RW | u16 | Encoder | Controlled channel level step | % 1 - 100 (1) | |
| 396 | 0x018C | Holding | RW | u16 | Encoder | Behaviour below minimum level | 0 - switch the channel off 1 — retain the minimum level | |
| Service registers | ||||||||
| 90 | 0x005A | Holding | RW | u16 | Channel 1 | Service register: raw duty cycle | 0 - 2000 (0) | |
| 91 | 0x005B | Channel 2 | ||||||
| 92 | 0x005C | Channel 3 | ||||||
| 93 | 0x005D | Channel 4 | ||||||
| Address | Register parameters | Description | Values | Note | |||
|---|---|---|---|---|---|---|---|
| Dec | Hex | Type | Access | Format | |||
| Connection settings | |||||||
| 110 | 0x006E | Holding | RW | u16 | RS-485 baud rate. RS-485 connection parameter settings |
×100, baud 12 — 1200 bit/s, 24 — 2400 bit/s, 48 — 4800 bit/s, 96 — 9600 bit/s, 192 — 19200 bit/s, 384 — 38400 bit/s, 576 — 57600 bit/s, 1152 — 115200 bit/s |
|
| 111 | 0x006F | Holding | RW | u16 | RS-485 parity setting | 0 — no parity (none), 1 — odd, 2 — even |
|
| 112 | 0x0070 | Holding | RW | u16 | RS-485 stop bits More about ignoring stop bits |
1, 2 | |
| 128 | 0x0080 | Holding | RW | u16 | Modbus device address (details) | ||
| Device model and firmware version | |||||||
| 200-205 | 0x00C8 - 0x00CD | Input | RO | string | Device model | ||
| 206-219 | 0x00CE - 0x00DB | Input | RO | string | Device model extension. | Read 20 registers (200–219) to obtain the device model | Only in firmware versions that support Fast Modbus |
| 220-244 | 0x00DC - 0x00F4 | Input | RO | string | Firmware build commit hash and branch name (2 characters per register) | ||
| 250-265 | 0x00FA - 0x0109 | Input | RO | string | Firmware version | ||
| 266-269 | 0x010A - 0x010D | Input | RO | u64 | Serial number extension | ||
| 270-271 | 0x010E - 0x010F | Input | RO | u32 | Serial number | ||
| 290-301 | 0x0122 - 0x012D | Input | RO | string | Firmware signature | ||
| 320 | 0x0140 | Input | RO | u16 | Firmware version in numeric format (details) | MAJOR | Only in firmware versions that support Fast Modbus |
| 321 | 0x0141 | MINOR | |||||
| 322 | 0x0142 | PATCH | |||||
| 323 | 0x0143 | s16 | SUFFIX | ||||
| 324-325 | 0x0144 - 0x0145 | Input | RO | u32 | Firmware version in numeric format | Only in firmware versions that support Fast Modbus | |
| 326-327 | 0x0146 - 0x0147 | Input | RO | u32 | Firmware version in big-endian format | Only in firmware versions that support Fast Modbus | |
| Other information | |||||||
| 104-105 | 0x0068 - 0x0069 | Input | RO | u32 | Uptime since boot | seconds | |
| 120 | 0x0078 | Holding | RW | u16 | Reboot device without saving state | Any non-zero value reboots the device | |
| 129 | 0x0081 | Holding | RW | u16 | Enter firmware update mode for 2 minutes | Any non-zero value enters firmware update mode | |
| 330-337 | 0x014A - 0x0151 | Input | RO | string | Bootloader version | ||
| 130 | 0x0082 | Holding | RW | u16 | Disable Status LED | 0 — enabled 1 — disabled |
|
| 131 | 0x0083 | Holding | RW | u16 | Enter firmware update mode using the current communication settings. To check whether the firmware and bootloader support this feature, read this register. If reading succeeds and returns 0, the feature is supported.
|
Writing 1 enters firmware update mode | From firmware version 2.4.4 |
| 113 | 0x0071 | Holding | RW | u16 | Delay before sending a response to a Modbus request | ms 0…254 (0) |
Only in firmware versions that support Fast Modbus |
| 114 | 0x0072 | Holding | RW | u16 | Continuous reading across register gaps | 0 — disabled 1 — enabled 2 — enabled persistently across reboots |
Only in firmware versions that support Fast Modbus |
| 121 | 0x0079 | Input | RO | u16 | Current supply voltage | mV | |
| 122 | 0x007A | Input | RO | u16 | Minimum supply voltage since boot, without averaging | mV | |
| 125 | 0x007D | Input | RO | u16 | Current supply voltage, without averaging | mV | |
| 119 | 0x0077 | Input | RO | u16 | Minimum microcontroller supply voltage since boot, before averaging | mV | |
| 123 | 0x007B | Input | RO | u16 | Microcontroller supply voltage | mV | |
| 124 | 0x007C | Input | RO | s16 | Internal microcontroller temperature | x0.1, °C | |
| 304-319 | 0x0130-0x013F | Input | RO | string | Device batch number.
Available only on devices manufactured from 21 January 2026. |
From firmware version 2.7.0 | |
| 65402 | 0xFF7A | Holding | RW | u16 | Reset device settings to defaults. Communication settings are retained. The device reboots after the reset. |
Writing 1 resets the settings | From firmware version 2.6.3 |
| 64256-64383 | 0xFB00-0xFB7F | Input | RO | u16 | FlashFS: free space per page | bytes | From firmware version 2.7.0 |
| 64384-64511 | 0xFB80-0xFBFF | Input | RO | u16 | FlashFS: total size of current files per page | bytes | |
| 64512-64639 | 0xFC00-0xFC7F | Input | RO | u16 | FlashFS: page fragmentation | 0…100 % 0 — all data is current, 100 — no current data | |
| 64640-64767 | 0xFC80-0xFCFF | Input | RO | u16 | FlashFS: page erase counter | ||
| 65504 | 0xFFE0 | Input | RO | u16 | Maximum stack usage | bytes 0 — stack corrupted |
From firmware version 2.7.0 |
| 65505 | 0xFFE1 | Input | RO | u16 | Free RAM | bytes | |
| 65506 | 0xFFE2 | Input | RO | u16 | Used RAM | bytes | |
| 65507 | 0xFFE3 | Input | RO | u16 | Stack size | bytes | |
| 65508 | 0xFFE4 | Input | RO | u16 | Cause of last MCU reset | 1 — LPWR, 2 — WWDG, 3 — IWDG, 4 — SFT, 5 — POR, 6 — PIN, 7 — OBL, 8 — V18PWR |
From firmware version 2.7.0 |
| 65509 | 0xFFE5 | Input | RO | u32 | Firmware update counter | From firmware version 2.7.0 | |
| 65511 | 0xFFE7 | Input | RO | u16 | MCU memory capacity | High byte: flash capacity code; capacity in KB = 16 × 2code; Low byte: RAM capacity in KB. Example: 0x0208 (520) — 64 KB flash, 8 KB RAM |
From firmware version 2.10.6 |
Firmware updates and resetting settings
Wiren Board devices support firmware updates over Modbus. This allows bugs to be fixed at the installation site and, where technically possible, new features to be added. Settings stored in the device are retained during a firmware update.
Instructions:
- Firmware update ()
- Resetting settings
- Connection parameter settings
- Modbus address: find, reset or change
- Updating the bootloader
New firmware releases are listed in the device firmware changelog.
Known issues
Check the hardware batch and firmware version before applying a workaround.
| Issue | Affected devices | Resolution |
|---|---|---|
| ERRMAO0001: the output may fail to hold 0 V or other low voltages when current flows into the output. | Batches v2.2–v2.4B inclusive. | Fixed in batch v2.4B/1 (21 June 2022). Contact sales or technical support for a warranty replacement. |
| ERRMAO0002: outputs start in PWM mode even when analog mode is configured. | Firmware 2.3.0–2.4.0 inclusive. | Update to firmware 2.4.1 or later. Switching to PWM and then back to analog mode works temporarily, but the problem returns after a restart. |
| ERRMAO0003: changing the minimum or maximum threshold while a channel is on produces an incorrect level. | Firmware 2.4.0–2.4.2 inclusive. | Fixed in firmware 2.4.3 (27 September 2023). Writing a new brightness value restores correct operation. |
| ERRMAO0004: mixing direct millivolt control and percentage control can produce a sudden voltage jump before a smooth transition. | Firmware 2.4.0–2.6.2 inclusive. | Use only one control method, or update to firmware 2.6.3 or later (fixed on 14 April 2025). |
| ERRMAO0005: incorrect factory output mode and PWM frequency. | Batches 2.8D, 2.8D/1, 2.8E and some devices in batch 2.8C. | Set analog mode and 1 kHz in the web interface, or write 1 (0x0001) to holding register 10 (0x000A) and 24 (0x0018) to register 9 (0x0009). Fixed from batch v2.8E/1. |
| ERRMAO0006: impulse interference on outputs can cause significant output-voltage errors. | All batches before v2.9. | Fixed from batch v2.9. In 0–10 V mode, fit a 47 µF, 16 V electrolytic capacitor across each output. In PWM mode, replace the device with batch v2.9 or later. |
For firmware updates and recovery, see Modbus firmware service.
Hardware revisions
The batch number is printed on a label on the side of the enclosure or on the PCB.
| Revision | Batches | Release date | Changes from the previous revision |
|---|---|---|---|
| 2.9 | v2.9E - ... | 08.2026 - ... |
|
| 2.9 | v2.9C, v2.9C/2, v2.9D, v2.9D/1 | 02.2026 - 08.2026 |
|
| 2.9 | v2.9A, v2.9B, v2.9C/1 - ... | 07.2025 - ... |
|
| 2.8 | v2.8E/1, v2.8E/2, v2.8D/2, v2.8D/3 | 04.2025 - 07.2025 |
|
| 2.8 | v2.8A, v2.8B, v2.8C, v2.8D, v2.8D/1, v2.8E | 12.2023 - 05.2025 |
|
| 2.7 | v2.7A, v2.7A/2, v2.7B, v2.7B/1, v2.7C, v2.7C/1, v2.7C/2 | 03.2023 - 10.2023 |
|
| 2.6 | v2.6A, v2.6B | 11.2022 - 01.2023 |
|
| 2.5 | v2.5A, v2.5B, v2.5C | 06.2022 - 11.2022 |
|
| 2.4 | v2.4A - v2.4B, v2.4B/1 | 08.2021 - 06.2022 |
|
| 2.2 | v2.2D | 07.2021 |
|
| 2.2 | v2.2A - v2.2C | 10.2020 - 06.2021 |
|
| 2.0 | v2.0A - v2.0B | 06.2020 - 09.2020 |
|
| 1.0-1.1 | - | 2016 |
|
Images and drawings
-
WB-MAO4 control module PCB, version 2.0
-
Overall dimensions

