Itron Water Meter Cyble M-Bus Adaptors for the Outbuildings

For various reasons it proved difficult to set up the Cyble M-Bus adaptors for the two Itron water meters in the Outbuildings. (There are already three nearly-identical water meters with Cyble M-Bus adaptors in the House, which are working perfectly.)

The first challenge was sourcing the Cyble M-Bus reader heads. The original plan was for the building contractor’s plumber to source these along with the Itron Aquadis+ water meters (which is what happened last time, for the units in the House) but while the plumber had no issue obtaining the meters they struggled with the Cyble units and we all agreed I would source those myself, since I knew which specific ones I needed (and I assumed they would be easy enough to get hold of). The Cyble Pulse-Output reader heads are readily available but for some reason the M-Bus variants are more difficult to source. The best supplier for these in the UK seems to be MWA Technology, who list them on their website as Itron Cyble M-Bus For Aquadis and Woltex but MWA are not geared up to dealing with individual customers and while they were helpful they said they’d have to get their finance team to set me up with an Account – which sounded like a lot of work for both them and me. They suggested various distributors, some of which I’ve used before, but those just pointed me back at MWA. In the end I was successful in sourcing two of the Cyble M-Bus readers from metermarket.co.uk who happened to have a few in stock, though these days they specialise in Electricity meters rather than Water meters.

The second challenge was getting these to report meter readings via M-Bus. I knew I’d have to set the M-Bus addresses for each adaptor and I’d forgotten that these are supplied set to Primary Address 0 (for some reason I remembered them defaulting to Primary Address 1) and I wasn’t sure whether the RS-232 connection to the Relay PW20 M-Bus interface needed any sort of adaptor cable or not.

The PW20 is fitted with a Female DE-91 connector and the USB-to-RS-232 lead (with an FTDI interface chip) has a Male DE-9 connector – so that should all work fine but they both have fixing nuts which clash, preventing the plug from being inserted.

A minor annoyance – the electrical connectors will mate directly – except both sides have the nuts fitted

The nuts are rigidly fixed into the connector on the lead – and they secure the connector to the front of the PW20 (with further nuts inside the case which would be hard to re-attach.) Creative use of two Gender Change adaptors with the locknuts removed seems to work OK. (Ordinarily I use a different FTDI cable with a replacement DE-9 head, which has locking screws rather than locking nuts.)

After trying various cabling options and checking the default Primary Address I was able to program a unique Primary Address (and the meter serial number and initial meter reading) using the Actaris Cyble M-Bus Configuration Tool (CMCT) software. The devices then responded to the normal M-Bus polling code – but with ‘short’ responses, missing any meter readings. Comparing these responses to the ones from the ‘good’ meters in the House, the <Status>10</Status> is the only material difference in the <SlaveInformation> record (the meters in the House report <Status>00</Status>).

$ mbus-serial-request-data -b 2400 /dev/ttyUSB0 6
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>

    <SlaveInformation>
        <Id>22001387</Id>
        <Manufacturer>ACW</Manufacturer>
        <Version>20</Version>
        <ProductName>Itron CYBLE M-Bus 1.4</ProductName>
        <Medium>Water</Medium>
        <AccessNumber>20</AccessNumber>
        <Status>10</Status>
        <Signature>0000</Signature>
    </SlaveInformation>

    <DataRecord id="0">
        <Function>Manufacturer specific</Function>
        <Value>00 22 00 13 87 CF EA 03 07 01 12 03 0B</Value>
        <Timestamp>2026-01-24T13:02:29Z</Timestamp>
    </DataRecord>

</MBusData>

Initially I wondered whether the meters needed to ‘see’ a certain amount of water usage in order for a reading to be reported, but even running a couple of hundred litres through one of them didn’t change the response.

There aren’t many functions available in the CMCT software, but one of those is Reset alarms and running that did the trick, with the XML response changing to the expected:

$ mbus-serial-request-data -b 2400 /dev/ttyUSB0 6
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>

    <SlaveInformation>
        <Id>22001387</Id>
        <Manufacturer>ACW</Manufacturer>
        <Version>20</Version>
        <ProductName>Itron CYBLE M-Bus 1.4</ProductName>
        <Medium>Water</Medium>
        <AccessNumber>40</AccessNumber>
        <Status>00</Status>
        <Signature>0000</Signature>
    </SlaveInformation>

    <DataRecord id="0">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Fabrication number</Unit>
        <Value>22001387</Value>
        <Timestamp>2026-01-25T15:08:47Z</Timestamp>
    </DataRecord>

    <DataRecord id="1">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>cust. ID</Unit>
        <Value>0Z        </Value>
        <Timestamp>2026-01-25T15:08:47Z</Timestamp>
    </DataRecord>

    <DataRecord id="2">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Time Point (time &amp; date)</Unit>
        <Value>2026-01-25T15:07:00</Value>
        <Timestamp>2026-01-25T15:08:47Z</Timestamp>
    </DataRecord>

    <DataRecord id="3">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>bat. time</Unit>
        <Value>4010</Value>
        <Timestamp>2026-01-25T15:08:47Z</Timestamp>
    </DataRecord>

    <DataRecord id="4">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Volume (m m^3)</Unit>
        <Value>3515</Value>
        <Timestamp>2026-01-25T15:08:47Z</Timestamp>
    </DataRecord>

    <DataRecord id="5">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Volume (m m^3)</Unit>
        <Value>0</Value>
        <Timestamp>2026-01-25T15:08:47Z</Timestamp>
    </DataRecord>

    <DataRecord id="6">
        <Function>Instantaneous value</Function>
        <StorageNumber>1</StorageNumber>
        <Unit>Volume (m m^3)</Unit>
        <Value>0</Value>
        <Timestamp>2026-01-25T15:08:47Z</Timestamp>
    </DataRecord>

    <DataRecord id="7">
        <Function>Manufacturer specific</Function>
        <Value>1F 02 00</Value>
        <Timestamp>2026-01-25T15:08:47Z</Timestamp>
    </DataRecord>

</MBusData>

Another thing to note is that by default, the Volume Index in CMCT was formatted as NNNNNNN.N m3 whereas the physical display on the meter shows NNNNN.NNN m3 – and they need to match in order for the readings to be accurate. While it’s not possible to add three decimal places with 7 leading digits (i.e. NNNNNNN.NNN) it is possible to delete two of the leading digits in order to add three decimal places.

Finally, after having had issues with the Cyble reader heads getting dislodged in the past (resulting in them missing some updates from the meters) I wanted to pay more attention to fixing them more securely. I rather expected the new units to come with fixing screws, but they didn’t – but the one screw I had for the meters in the House fitted fine. That’s an M4 x 25mm Cheese Head machine screw, made of Nylon. Note it’s necessary to destructively ‘unscrew’ a plastic piece covering the brass insert that the screw engages with. On the newer meters this projects roughly 5mm above the surface and prevents the Cyble adaptor being fitted until it is removed, whereas on the older meters it’s recessed below the surface and only prevents the screw from being inserted. The removal of this plastic piece is cryptically shown at W2 ‘B’ in the Installation Instructions (attached below).

  1. Sometimes mistakenly called a DB-9 – but the ‘B’-size connector shell is generally only used with 25-pin connectors ↩︎

M-Bus Electricity Sub-Meters for the Outbuildings

I’ve been finding the electricity sub-meters in the House very useful, showing the electrical consumption of the ‘significant’ electrical loads as a proportion of the total recorded by the main electricity meter, so I’ll be adding some in the Outbuildings too.

For the House, I initially used cheap meters with only an S0 ‘pulse’ output and recorded the readings manually every month. Later, I found some affordable (second-hand) M-Bus adaptors for the ‘pulse’ meters (various models from the Relay Padpuls range) and added those, enabling the meters to be included in the once-per-minute reading cycle for the Water meters and the Heat meters.

The ‘significant’ loads that in my view warrant a dedicated sub-meter are:

  • Heat Pumps
    • In conjunction with a Heat Meter for heat pumps with a Water output, enabling the real-world efficiency to be calculated
    • With an Air-to-Air heat pump, as will be installed in the Outbuildings, it’s not practical to measure the heat output – but it’s still worth recording the electricity input
    • If there are secondary circulation pumps or control units which have a separate electrical supply from the main Heat Pump unit, these should ideally have their own sub-meter
  • Mechanical Ventilation (with or without Heat Recovery) Systems
    • While their consumption is not especially high, the fact that these typically run 24×7 means their total usage can add up – and since they’re still quite unusual in UK homes it’s good to track their actual energy consumption
    • Some MVHR units vary their fan power to provide a consistent airflow, in which case a gradual increase in energy consumption can be an indication that the filters need replacing – although normally the filters should be replaced before this increase becomes noticeable
  • Electric Vehicle Charge Points
    • Sometimes these incorporate their own electricity metering, which can be accessed via a Smartphone App or other interface, but it’s convenient to have them metered in the same way as the other electrical loads
    • Each charge point should have its own meter, should there be more than one
  • Other ‘large’ or ‘interesting’ loads
    • Immersion heaters
    • Rainwater harvesting pumps

There’s a wide choice of electricity meters with an S0 ‘pulse’ output (EN 62053-31) and a rather smaller choice of meters with a Modbus output. For meters with a native M-Bus (Meter-Bus) output the choice is smaller still – but for a building that needs to have some M-Bus metering anyway it’s much more straightforward to add further M-Bus meters than to cater for alternative metering protocols as well.

I’ve settled on using MID-certified M-Bus meters from UK company Rayleigh Instruments, having added one of their meters to the House a few months ago and after receiving positive feedback from another self-builder who uses one for their air-to-water Heat Pump:

  • The 2-module-wide RI-D35-100-MB which is a directly-connected meter for loads up to 100A
    • This reports Manufacturer = “RAY” which is one of two manufacturer codes allocated to “Rayleigh Instruments, United Kingdom”
    • This returns a lot of data via M-Bus which spills over into a second M-Bus telegram, requiring the M-Bus software to be able to handle a multi-telegram response
  • The 1-module-wide RI-D175-MB which is a directly-connected meter for loads up to 45A
    • Despite being branded as a Rayleigh Instruments unit, this reports Manufacturer = “PAD” which is a manufacturer code allocated “PadMess, Germany”
    • Note that this meter appears not to respond to a Secondary M-Bus address, so Primary addressing must be used
    • There’s a variant of this available with a Current Transformer (CT) input instead of being directly-connected, which caters for currents up to 100A
    • There’s more information about this specific meter in a Technical Article page here.

These are available for about £25 each; surprisingly the larger meter is less than 10% more expensive than the smaller one, so actually I only use the smaller one for loads up to about 16A (where the smaller terminals are helpful for connecting smaller-section cables) and use the larger one for loads like the EV charge points, where the load won’t even exceed 32A.

The Rayleigh meters are shipped with their Primary M-Bus address set to ‘0’ (RI-D35-100-MB) or ‘1’ (RI-D175-MB) so if the intention is to extract readings using the Primary rather than the Secondary M-Bus addresses, these need to be changed from the default. This can be accomplished using one of the utilities shipped as part of the libmbus codebase:

$ mbus-serial-set-address -b 2400 /dev/ttyUSB0 old_primary_address new_primary_address