M-bus to Kamstrup 403 not working

Just installed my Kamstrup 403.

Not seeing modbus responses.

Checked voltage and its 30.5VDC across MBUS terminals.

Any ideas please?

I Have adjusted the DC-DC power supply to 24V.

Still not reading back.

Your 403 uses M-Bus (Meter Bus) which is quite different from Modbus.
I’m not familiar with M-Bus, so unfortunately I can’t help. But I do know that’s it’s not
the same thing as Modbus. Perhaps someone versed in M-Bus can help.

Edit - I see that a Modbus module for the 403 is available.
If you have the Modbus module, I might be able to help.


Thanks, my mistake.

It is M-Bus.

I have also just set the “Primary Address” on the Kamstrup to 100 to match the default in the arduino heatpump firmware.

Got excited as it was not set to 100 in the Kamstrup when i found the menu, But sadly still not talking…

I edited the title of the thread to reflect that.

Hello @jbetech

Can you check the baud of the Kamstrup meter from the LCD display? Does it match the baud rate set in the firmware? The DC-DC Power supply should read ~34V

1 Like

Hi @TrystanLea

Thanks for jumping in! I hope you would :smiley:

I cant see Baud on the meter display and sounds like it auto detects:

Communication speed
The modules support 300, 2400, 9600 and 19200 baud communication speed and automatically detect the communication speed used by the M-Bus master.

Is it 34 vdc? I set it to 24 when reading the install guide:

Troubleshooting: If the kamstrup meter data does not appear straight away, wait several minutes for the reader to rescan. The voltage across the MBUS reader terminals should be close to 24V.


Thanks for spotting the typo @jbetech the voltage should be 34V. I’ve amended the guide, let me know if it starts reading.

1 Like

Hi @TrystanLea

I set the voltage at the M-Bus terminals on the Heatpump board to 34v with the Kamstrup disconnected.

Unfortunately its not working.

Had a read up on M-bus and it talks about 36v > 24v signal amplitude. Is 34 going to be sufficient?

Any ideas welcome, its the last piece to get my logging under way now :slight_smile:

I would probably try the MBUS_Reader firmware at this point:

The default baud rate is set to 2400 here: https://github.com/openenergymonitor/HeatpumpMonitor/blob/master/Firmware/Arduino/MBUS_Reader/MBUS_Reader.ino#L50

You can use it to send a range of commands to the MBUS meter without all the other functions of the main sketch, can be quite useful for debugging, the firmware prints a menu of commands that can be sent when it starts up.

Try the set mbus address to 100 (a), normalize (n) and request data (r) commands to see if you get any replies.


That look great! Will try, Thank you.

1 Like

Hi @TrystanLea

Just reading through the firmware and realised the Baud is set to 4800 not 9600 per the commented line, so will try that as soon as i can.

Any idea what CSERIAL_8N1 / 8E1 is? And what it should be set to?


// (5,19);
customSerial = new CustomSoftwareSerial(4,5); // rx, tx
customSerial->begin(4800, CSERIAL_8E1); // Baud rate: 9600, configuration: CSERIAL_8N1


// Broadcast set address to 100
if (DEBUG) Serial.println(F(“Set MBUS Address to 100”));

Bits, parity and stop bits. But I’ve no idea what it should be set to.
Parity can be odd, even or none, stop bits can be none, 1 or 2 (usually). Often, parity is only used with 7 data bits to give a total of 8.

Sorry the comment is misleading I will change that, CSERIAL_8E1 and 4800 or 2400 baud is the correct settings.

Thanks @TrystanLea

Now working!

CSERIAL_8E1 and 2400 on my Kamstrup 403.

Note: 403 only support 2400, 9600 or 19200. Not 4800.

Great to hear @jbetech! Did you mean XSERIAL_8E1 or CSERIAL_8E1?

Hi @TrystanLea

Corrected! CSERIAL_8E1.



Hello, I am an Iranian. Unfortunately, in my country, I do not have the m -bus facilities of the Comstrap meter here. Help me, how should I use USB?

Hello @Aali1364 could you tell us more about the meter that you have there, if you can take a picture of the meter showing any details such as the model number etc that would be really useful.