The USB-XR-RS232 adapter is a USB-UART to RS-232 module that supports automatic RTS/CTS hardware flow control fully compatible with the 2681 DUART on the ST-2900 CPU board, allowing it to reliably communicate at up to 115200 bps without losing any characters. This adapter can also be used to connect to RS-232 serial ports on other devices, at up to 460800 bps.
Many other more common USB-UART chips do NOT correctly implement hardware flow control. For example, FTDI admit that after their chips receive a negated CTS signal, they might transmit another 1-3 characters before pausing their transmitter, which would cause the 2681 DUART to lose all of those additional characters -- very bad. My testing discovered that the Microchip MCP2200 transmits one additional character, and many other devices probably do the same. But even worse is that the 16C550 UART on many desktop computer motherboards (such as mine) often transmits 15 additional characters, although this might partly be due to the Windows driver?
USB-XR-RS232 version 1.0 features:
USB-XR-RS232 version 2.0 features:
Power (+5.0V, +3.3V) for the USB-XR-RS232 is supplied by the USB port and the LDO. However, when using the Breakout board by itself, it would have been useful to have an option to support a self-powered configuration -- maybe in a future revision? I also now realize I don't need the USBLC6-2SC, as the XR21B1411 has equivalent protection built-in, unlike the FTDI devices I have used in the past, so removed it from v2.0.
I do not plan to manufacture and sell this module. Instead, I have published the complete set of documentation on this web page: KiCad schematics and PCB layout files, Gerber files, BOM, and assembly instructions -- see below. MaxLinear's XR21B1411 web page contains the USB drivers for Windows, Linux, and macOS.
(Click on a picture for a larger version.)
KiCad 3D renders of v1.0 panels (46-67KB .png). | |||
KiCad 3D renders of assembled v2.0 module (183-222KB .png). |
USB-XR-RS232 v2.0 schematics. (253KB .pdf) | |
USB-XR-RS232 v2.0 design and production files. (1.4MB .zip) |
Progress History
I purchased a MaxLinear/Exar XR21B1411L-0A-EB evaluation board for the XR21B1411 in November 2020. Testing with my logic analyzer confirmed that its automatic RTS/CTS hardware flow control works correctly!! I then used this evaluation board to connect to serial Port B on one of my ST-2900 systems, and since then it has reliably worked with my DSKdrv/DSKserv software (similar to DriveWire for the CoCo) to serve remote disk images at 115200 bps.
A year later I started designing a small custom USB-UART to RS-232 adapter using this chip. The initial schematics and PCB layout were done with ExpressPCB Classic. Then in November 2023 I started to seriously learn how to use KiCad, and ported the design to KiCad 7.0.
On 2024-Jan-24 I ordered five panels of each of the two v1.0 boards from JLCPCB. This is the first time I have ever had any of my boards made and/or assembled in China. The assembled panels arrived 2024-Feb-05 via DHL. They looked good.
I should have asked JLCPCB to depanellize (singulate) the v1.0 boards from the panels, but didn't. The tabs (with mousebites) connecting the boards are too stiff and strong to safely break by bending, as that would risk stressing the SMT solder joints too much. Instead, I used a small hacksaw with a 32 tpi blade to carefully cut apart one panel of each board. Since cutting FR4 generates lots of nasty dust, I wanted to do this outside, so waited a few days for the right weather (not too cold, not raining, but damp to reduce the risk of static electricity).
It wasn't easy to find the software to program the OTP (One Time Programmable) memory in the XR21B1411 to change some settings, and MaxLinear (Exar) support didn't always respond to my questions in a timely fashion. Eventually I did find the Exar OTP Programming Tool software (.zip), and the Exar Web Configuration Tool user manual (.pdf), but I never did find a link to the Exar I/O Lab Web Configuration Tool itself.
However, MaxLinear no longer support these original Exar OTP programming tools. Instead, they asked me to provide them with the desired settings, and after many days sent me a command line tool and custom configuration file to perform the programming. Each time different settings are needed, this process needs to be repeated, which is a pain. Fortunately, I eventually determined that programming the OTP is not necessary, as the factory defaults are acceptable to me, as long as I connect pullup or pulldown resistors (which I added to the v2.0 board) to the three unused GPIO pins that default to inputs. This also means that anyone else building a v2.0 board won't need to ask MaxLinear for the programming tool and configuration file, since I am not allowed to distribute them.
I successfully programmed the OTP in one v1.0 Breakout board, then tested it and three others. All were OK, except one where it appears the DTR output pin likely had a bad solder connection? When I connected a v1.0 RS-232 board to one Breakout board, I was able to communicate with the console serial port on one of my ST-2900 systems, so the basic design seems to be correct.
On 2024-Mar-23 I ordered five panels of the v2.0 boards from JLCPCB. This is the first time I have ever had any double-sided SMT boards assembled with reflow soldering in China. I didn't specify any mousebites or V-cuts on the tabs (that make it easier to separate the boards from the panels after being assembled), assuming JLCPCB would have an option to use a router for depanellization (singulation), so didn't need them. But despite asking JLCPCB several times, they never replied to say whether routing was or was not an option -- they just kept asking whether I wanted them to add mousebites or V-cuts. Eventually we mutually agreed to cancel the order and start over.
I modified the panels to specify V-cuts (scores), and on 2024-Apr-01 ordered a set of new panels. This time the ordering process went much smoother. The assembled and depanellized boards arrived 2024-Apr-12 via DHL. They looked very good! As a bonus, even though I hadn't asked JLCPCB to solder the thru-hole tabs on the USB connector, they did anyway, so now I don't need to. Two days later I had finished building and testing and installing the four modules I need for two of my ST-2900 systems. (I used clear heatshrink tubing to cover the modules.) And I still have 16 spare v2.0 boards for future use.
I have since experienced some problems with these modules. On my older Windows 7 computers, when all four modules are connected, one of them (but not always the same one) shows in Device Manager as not correctly installed, with error 31. The workaround for now for my desktop computer is to use an actual RS-232 serial port in place of one of the USB modules. But this isn't an option for my Windows 7 laptop computer, or for my Windows 11 computer, neither of which have RS-232 serial ports.
On June 7th I assembled and tested four more modules, but had some problems installing them on my Windows 7 laptop computer. I had recently made sure the latest drivers were installed on all my Windows computers. Then when I installed all 8 modules on my Windows 11 computer, one at a time, two were assigned the same COM port number, even though the USB chips have different serial numbers, so had to manually change the COM port number. When I connected two modules simultaneously, the second one plugged in generated error 31 (not correctly installed), even when I switched the order in which I plugged them in, i.e., the error occurred for a different module.
On June 21st I did some final testing before packing up my equipment to take to the Retro-Computing Expo '24 in New Westminster, BC (Canada) the next day. With four USB-XR-RS232 modules plugged into my Windows 7 laptop computer, one module generated "Error 31: SetCommState, device is not functioning", when either my terminal emulator (written in Python) or the MTTTY terminal emulator (written in C) tried to open that COM port. Device Manager didn't show any installation problem with any of the four modules. As soon as I unplugged two of the other modules, that port worked just fine. Fortunately, the next day at the show, all four modules worked without any errors.
It appears to me that the MaxLinear/Exar driver has some serious bugs?
Last revised 2024-Jun-25 14:34 PDT.
Copyright 2018- David C. Wiens.