Hello,
we have a use case of modbus gateway where a modbus device is connected to RUT956 via serial connection and it is accessed by a TCP/IP client. This worked fine with firmware RUT9M_R_00.07.08.2.
After upgrade to RUT9M_R_00.07.16.3 (identical configuration), the client application no longer works, because correct device ID is not received via TCP/IP.
I compared both cases using strace.
The relevant part with RUT9M_R_00.07.08.2 (working correctly) looks like this:
recvfrom(6, "\0\0\0\0\0\5\1+\16\1\0", 520, 0, NULL, NULL) = 11
recvfrom(6, 0x7f9d4268, 520, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
write(4, "\1+\16\1\0pw", 7) = 7
read(4, "\1+\16\1\1\0\0\3\0\21Morningstar Corp.\1\vSS-MPPT-15L\2\tv01.01.09\31\210", 520) = 53
read(4, 0x77e005d9, 467) = -1 EAGAIN (Resource temporarily unavailable)
sendto(6, "\0\0\0\0\0003\1+\16\1\1\0\0\3\0\21Morningstar Corp.\1\vSS-MPPT-15L\2\tv01.01.09", 57, 0, NULL, 0) = 57
Eg., the device ID (“Morningstar”, etc.) is received from serial port (read) and forwarded to TCP/IP client (sendto).
In case of RUT9M_R_00.07.16.3, it looks like this:
recvfrom(9, "\0\0\0\0\0\5\1", 7, 0, NULL, NULL) = 7
recvfrom(9, "+\16\1\0", 5, 0, NULL, NULL) = 4
write(8, "\1+\16\1\0pw", 7) = 7
read(8, "\1+", 2) = 2
read(8, "\16", 1) = 1
read(8, "\1\1", 2) = 2
read(8, "\0\0\3\0\21Morningstar Corp.\1\vSS-MPPT-15L\2\tv01.01.09\31\210", 260) = 48
sendto(9, "\0\0\0\0\0\3\1+\16", 9, 0, NULL, 0) = 9
Device ID is received from serial port, but for some reason it is not forwarded to TCP/IP client.
I’d appreciate any tips for getting this working again, so we wouldn’t be stuck with old firmware.