reComputer 1000 Unable to Run RS485 BACnet MS/TP at 9600 baudrate

Hi,

I am using my reComputer as the Master device in a BACnet MS/TP network and was relying on the onboard RS485 interface for communication. I followed the kernel module guide and successfully tested basic serial communication: using a simple serial communication terminal on my laptop, connected to the reComputer via an RS485-to-USB dongle, I was able to send and receive typed symbols over /dev/ttyAMA3 file without issues.

However, the problem arose when I deployed a BACnet stack on the reComputer and connected it to my laptop running YABE. While YABE could successfully list all accessible devices on the network, attempting to read device properties failed, and YABE began logging “Garbage” messages. reComputer is a single device on the network.

I was using a 9600 baud rate, which is a requirement for my setup. After several attempts to resolve the issue by adjusting the baud rate, I discovered that communication worked at 115200 baud. At this higher baud rate, the “Garbage” log messages were minimal, and I could read and write device properties.

To further diagnose the issue, I replaced the reComputer’s internal RS485 interface with an RS485-to-USB dongle and used /dev/ttyUSB0 instead. This setup allowed for successful communication with my device at all baud rates, including 9600, without any “Garbage” log messages.

From my observations, it seems there may be an issue with the onboard RS485 driver or hardware. Could you please help me resolve this issue or clarify if there’s something I’m overlooking in my setup?

Thank you for your assistance!

Hi there,

For those unknown… " BACnet stands for Building Automation and Control Networks. It is a communication protocol standard designed specifically to provide a way to integrate building control products made by different manufacturers ."

a close analogy is MQTT and often they compete, with MQTT security out performing in HUGE deployments. (cloud based).

Can you do a "LOOPBACK on the port? Is it a 4 wire RS-485 ?
Does the port use Hardware flow control ? Sounds like a driver issue in the stack or the baud rate clock on the internal port is drifting (garbage)
The dongle is using the USB, is probably why it works. Give a good visual inspection something may be loose in there…for such performance.

HTH
GL :slight_smile: PJ :v:

Thanks for the response! I have three RS485 ports with A, B, and GND terminals.
RS485 ports image
Please correct me if I’m wrong, but to perform a loopback test, I should connect the A and B terminals of two RS485 ports and then send test data between them, right?

I’m not entirely sure about the hardware flow control, but according to the kernel module source code, the DTR signal is used. Unfortunately, I only have remote SSH access to the device, so I cannot inspect the timings with an oscilloscope.

Hi there,

Ok , so that would work , they are half Duplex then? On pair for send and one pair for recieve :+1: I would definitely check the physical connections too! , RS-485 is very sensitive because of the Differential drivers used , most noise will cancel out but intermittent connection will generate garbage if it’s one wire or pair that’s effected…

You can’t use hardware flow control, BTW there is no Signal for it, Software flow control will work. (if it’s DTR on the slave end, Then it’s looking for CTS/DSR on the host end , but unusual to have hardware flow in a RS-485 unless it’s a multidrop situation. YMMV

HTH
GL :slight_smile: PJ :v: