# How do I log UART ASCI data at high speed (above 921600 baud) [closed]

I am transmitting data from a microcontroller via UART and this is going to the USB port of a laptop.

The data comes formatted as ASCII, and I am viewing in real time and logging in a PC using TeraTerm. The problem is TeraTerm can only go up to 921600 baud, whereas the microcontroller could transmit at up to 3Mbaud.

Is there any software or device which I could use to view and log this data at higher than 921600 baud? 921600 is enough for now, but I would actually like to increase my sample rate for the data so I need to go higher.

• I personally can only view data at 20 baud YMMV :-) At the speeds you are talking about you are not really going to log data in a tool designed for viewing. You really need to capture the stream into a database of some description which can be queried for events of interest. So you should look for a data capture tool or write a database backed application to do this. – mhaselup Nov 13 '20 at 3:50
• You're probably mistaking a baud setting issue for an actual speed limitation. In particular the handling of high baud rates in operating system serial APIs is less than wonderfully standardized. Anyway, you should be able to put something together with pyserial or similar, especially if you pay careful attention to the specific high rates supported by your USB serial solution and how those are handled by the drivers for your operating system. This is really a PC software question more than an embedded one... – Chris Stratton Nov 13 '20 at 4:04
• What is the USB-UART bridge you are using? I doubt the TeraTerm software itself is limited to 921600 baud. If it is there are plenty of others like RealTerm that are not. As for hardware, the fastest FTDI C232HD cable can go up to 12Mbps, and most of their other cables/chipets work up to 3Mbps – DKNguyen Nov 13 '20 at 5:33
• @DKNguyen Tera Term is not limited. I use it at custom baud rates on a daily basis. Most cables I have just use FT232R chipset, it just has limited range of rate divisors and does not go past 3Mbps so never tried past that. – Justme Nov 13 '20 at 6:04
• @Justme Then I don't know what the OP means when they say TeraTerm is limited to 921600Mbps. – DKNguyen Nov 13 '20 at 6:06

Just keep using Tera Term. It does support user entered baud rates.

Depending on the USB UART chipset and installed drivers, custom baud rates may or may not be possible.

Its fairly trivial to write a small .net console application that just stores serial port data to a file. Here is roughly what it would look like in Visual Basic.net. Obviously a complete program would include error handling and possibly command line options.

Module Module1
Sub Main()
'Open a log file for writing
Dim f As System.IO.FileStream
f = IO.File.OpenWrite("C:\SERIAL_LOG.bin")
'Open a serial port at 3Mbps
Dim p As IO.Ports.SerialPort
p = My.Computer.Ports.OpenSerialPort("COM1", 3000000, IO.Ports.Parity.None)
'Keep writing serial data to the file until the user presses the ESC key.
While Not (Console.KeyAvailable AndAlso Console.ReadKey().Key = ConsoleKey.Escape)
End If
End While
'closer serial port
If p IsNot Nothing Then p.Close()
'close log file
If f IsNot Nothing Then f.Close()
End Sub
End Module


You can get one of the free versions of visual studio here.
https://visualstudio.microsoft.com/

You can fine the official documentation for all thing visual studio at
https://docs.microsoft.com/en-us/

After you are done capturing, you can then view the raw data in a hex editor/viewer such as HxD.
https://mh-nexus.de/en/hxd/

• Since the logged data is ASCII, it does not need to be viewed in a hex editor. Also, Tera Term supports custom baud rates if the port accepts them so this is an overly complex solution. – Justme Nov 13 '20 at 5:28