UART headers on Up2Stream HD DAC

Hi Guys,
I wonder if anyone has tried the UART Connection on the HD DAC. It seems there are 2 different UART headers on it, one for the A97 Module and one for the main board MCU. Which one could you make to work and what settings did you used for that? Do you have an API description for these UART ports?

What I’ve managed to find out: the A97 UART gives you a sh console for the busybox linux running on the A97 (115200), but the main board MCU UART seems not to be working (it’s connected to the pins of the BP1064 MCU), or at least not sending anything, or at least I was not able to send anything it would react to…

What’s useful for me and maybe for you as well, by sending the following commands to the A97, I can find out the IP it is using, so I can can connect to its HTTP (:443) or TCP (:8899) API

for wired: ip a s eth0 | grep "inet " | cut -d" " -f6 | cut -d/ -f1
for wireless: ip a s wlan0 | grep "inet " | cut -d" " -f6 | cut -d/ -f1

Alternatively you could listen to messages like this: [00:00:50.646] group_search: { "WMRM": "Search", "uuid": "<UUID>", "IP": "<WLAN-IP>", "version": "4.2", "eth": "<ETH-IP>", "type": "WMRM_MASTER" }
where ETH-IP and/or WLAN-IP should be the address you are looking for (the eth field is omitted if not connected). Or [00:05:19.275] master_info_socket_init <IP> ok

I hope we get at least a partial UART API for the BP1064 MCU as well, but until then I hope this helps you as well.

So my implementation (Arduino on ESP32) so far works fine in the loop:

  if (Serial.available()) { # if there is anything in the buffer
    if (Serial.find("master_info_socket_init ")) { # if the buffer contains the message
      uint8_t o1, o2, o3, o4;
      o1 = Serial.parseInt(); # Read octet
      Serial.read(); # Read delimiter dot
      o2 = Serial.parseInt();
      Serial.read();
      o3 = Serial.parseInt();
      Serial.read();
      o4 = Serial.parseInt();
      networkPlayerIP = IPAddress(o1,o2,o3,o4); # Create IPAdress out of the octets
    }
  }

Note: On non-ESP32 you migth need parseInt(SKIP_NONE), also the IPAddress class could be different and of course you can replace Serial with Serial2 or any other serial ports your controller has.

After that you can use the HTTPS API to communicate with it at https://<networkPlayerIP>:443 after trusting its self-signed certificate (assuming they are both on the very same network).