This is unlikely to help here, but since the TTL or voltage level issue came up...
I have a variety of SBCs and routers that have serial consoles on UART ports with specific voltage levels: 1.8V, 3.3V, and 5V. They often have no protection, so overvoltage can do irreparable damage (essentially require replacing the SoC to get the serial port functionality back, since it is often implemented directly on the SoC).
All my devices have both Vcc and GND pins in addition to the data pins (RX, TX; some, but not all, have hardware handshaking, i.e. CTS and RTS), so I do not actually need to
know the voltage used on the UART pins; I just want the voltage levels to match that Vcc pin.
I have used
SN74LVC1T45 dual supply bus transceivers (-DVBR, 6-pin SOT-23 footprint, single-bit), as they support any voltage between 1.65V and 5.5V on either side, with switching time less than 20ns, and were easily available. (In fact, LCSC still has
lots of them available, as of this writing, for USD $0.541 each in lots of ten. They also have the same chip in smaller footprints and other manufacturers, but me bumblefuck need the largest footprint for easier soldering.)
Yet, I've often discovered that if I were to use digital isolators (2/2, for TxD and RTS, and RxD and CTS), I could solve both voltage level and ground loop issues at once. Say, ISO6742 (Texas Instruments), Si8642 (Skyworks Solutions), MAX14932 (Maxim Integrated), and so on. (I personally do not need the additional RS-232 signals, and often could actually do with just 1/1 for TxD and RxD only.) Of these, ISO6472 can work with 1.8V, or 2.25 to 5.5V; Si8642 with 2.5V to 5.5V; and MAX14932 from 1.71V to 5.5V. There are other ones too, obviously; these are just the ones I've looked at.
Right now, digital isolator chips seem to be very hard to find. TME does have some ADuM chips, so if I was really in need, I'd use one with isolated DC-DC converter (so that the isolator worked at 5V or 3.3V on both sides), and SN74LVC1T45 or similar dual supply bus transceivers on the downstream end (for proper voltage level shifting); possibly with a optionally selectable linear regulator footprint, so that one could select the final downstream voltage between a supply pin, and the linear regulator. Choose a regulator footprint with 1.8V and 3.3V regulators, and you can use the same board for isolated UART connections at a selectable voltage level.
Currently, I actually use an USB isolator (cheap ADuM3160 12Mbit/s isolators off eBay; they're straight from the datasheet, just check the DC-DC converter used, and even the $10 ones are quite okay to use for this in my experience) between the microcontroller or USB-to-UART converter, so I get the isolation I want anyway, and the SN74LVC1T45 level shifters give me the level shifting capability.
I do have a Teensy 4.1, so I guess I could create a carrier board exposing all the UART RX and TX pins with a suitable SN74LVC1T45 each, in EasyEda. Teensy 4.0 exposes five UARTs on 0.1" pitch, though, so I'd actually recommend using 4.0s instead of 4.1s (because 4.0 is still available from PJRC.com for $20 each). There are additional two on the pads beneath, for a total of 7 RX/TX pairs, but they're much more trickier to solder to than the standard 0.1" pitch through holes on the perimeter. While not all of the UARTs have FIFOs, it is fast enough with LOTS of RAM so it should not be a problem at all. (My real world tests using Teensy 4.0 indicates it can trivially sustain 200 Mbit/s in one direction using USB Serial, so USB bandwidth and Teensy speed is definitely not an issue.)
The only questions are, really, how should the four pins – Vcc, RX, TX, GND – per UART be exposed: 0.1" through-holes/pins? Some kind of connector? And should it be a carrier board (sitting beneath the Teensy board), or a separate board you connect with wires?