There appears to be a disconnect between the UART naming and the pin assignments commonly used by ESP32 users in the Arduino renvironment (see https://components101.com/microcontrollers/esp32-devkitc for example) and under Atmosphere (per https://developer.atmosphereiot.com/documents/hardwareselection/esp32.html)
Specifically, what Atmosphere calls UART3 is the default “console” UART that connects to the USB-UART interface on DevKitC – that’s typically described as UART0 in Arduino, and is U0TXD/U0RXD per the Espressif’s hardware design details.
It took me a few hours of head scratching before I gave up for the day – it was only when I woke up the next day that I realized I needed to go back and re-read Atmosphere’s device details page for the ESP32 — I read it originally, but wasn’t focused on the UART detail at the time, so I had not noticed the mismatch in UART assignments.
Once I figured this out, I was able to get the UART Loopback demo working; and more importantly, was able to additionally use “UART1” (Atmosphere defined as IO4 and IO5).
It may be very helpful to newcomers to Atmosphere if there was a short-cut link from the studio to the device details page, and especially to the table of IO mappings as things are sufficiently different from more widely used conventions.