How to use TTY with User Terminal




1 Purpose[edit]

This article describes how to use TTY with a user terminal. The TTY overview is described in Serial TTY overview article.

The use case of the following examples is a data transfer between a STM32 MPU board and PC, over a USB to a RS232 adapter cable.
The setup of this use case is described in details in the How to get Terminal article.


For the following examples:

  • uart4 is activated by default (for the Linux console)
  • usart3 is enabled by device tree
  • The usart3 pins are connected to a RS232 card
  • The RS232 card is connected to the PC over the USB to RS232 adapter cable.

Note: Some TTY tools are used in this article. A list of TTY tools is defined a dedicated article [TTY Tools ].

2 Print the file name of the terminal connected to standard input (with tty tool)[edit]

Board $> tty
/dev/ttySTM0                                                                                 /* the console is connected to uart4, aka ttySTM0 */


3 Change serial port configuration (with stty tool)[edit]

Many serial port properties can be displayed and changed with the stty tool. The full feature list is available in stty user manual pages [1] .

Board $> stty --help
  • Display the current configuration:
Board $> stty -a -F /dev/ttySTM1                                                             /* display the configuration of uart3 aka ttySTM1*/
speed 115200 baud; rows 45; columns 169; line = 0;


  • Display only the current baud rate:
Board $> stty -F /dev/ttySTM1 speed
115200                                                                                     /* uart3 aka ttySTM1 baud rate is set to 115200 bps */


  • Change the baud rate:

stty -F /dev/ttySTMx EXPECTED_BAUDRATE

Example: change the baud rate to 19200

Board $> stty -F /dev/ttySTM1 19200                                                          /* uart3 aka ttySTM1 baud rate has been changed to 19200 bps */


The stty tool proposes many arguments allowing many operations on a tty terminal, such as:

  • special settings (various arguments such as speed, line discipline, minimum number of characters for a completed read, size, timeout, etc...)
  • control settings
  • input settings
  • output settings
  • local settings
  • combination settings


Note: If you want to go further, an interesting tutorial describes termios and stty [2].

4 Send / Receive data (with stty, minicom, echo and cat tools)[edit]

Sending data can be simply done by opening the device as a file and writing data to it:


  • Configure a port on ttySTM1 (usart3)
Board $> stty -F /dev/ttySTM1 115200 -echo


  • Open a port on ttySTM1 (usart3) to receive data
Board $> cat /dev/ttySTM1 &


  • On the remote PC, identify the tty terminal associated to RS232 card connected on STM32MPU USART3 pins
PC $> ls /dev/ttyUSB*
/dev/ttyUSB0
  • Open a minicom terminal on the remote device connected on USART3 pins
PC $> minicom -D /dev/ttyUSB0
  • Send data from remote PC to STM32MPU over USART3
PC $> echo "HELLO" > /dev/ttyUSB0
  • send data from STM32MPU to remote PC over USART3
Board $> echo "HELLO" > /dev/ttySTM1


5 Identify processes using a tty serial device (with fuser tool)[edit]

Board $> fuser /dev/ttySTM0
395 691 3872                                                                               /* the process numbered 395, 691 and 3872 are using a tty serial device*/


6 Link a tty serial device with a line discipline (with ldattach tool)[edit]

Attach ttySTM1 with line discipline number n :

Board $> ldattach n /dev/ttySTM1


7 File transfer over serial console[edit]

Please see the dedicated article How to transfer a file over serial console.

8 References[edit]

TeleTYpewriter

Microprocessor Unit

also known as

terminal input output structure

Attachments

Discussions