Dev/Host/Minicom: Difference between revisions

From Embeded Linux (and more) Wiki by Nathael
< Dev‎ | Host
Jump to navigation Jump to search
(Created page with "Minicom is a serial communication program with many many features which make it very usefull to connect to targets. == Configure == Despite what you will read on many places...")
 
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
Minicom is a serial communication program with many many features which make it very usefull to connect to targets.
[https://salsa.debian.org/minicom-team/minicom Minicom] ([http://man7.org/linux/man-pages/man1/minicom.1.html man page]) is a serial communication program with many many features which make it very usefull to connect to targets.


== Configure ==
== Allow normal users to access ttys and store configurations ==
Despite what you will read on many places : '''you do not need to be root to run or configure minicom !!!''' (but you will need a well configured system).
Despite what you will read on many places : '''you do not need to be root to run or configure minicom !!!''' (but you will need a well configured system).


=== Get access to ttys ===
==== Get access to ttys ====
First, you must add the users which should be allowed to run minicom to a group with read and write access to the ttys you want to use, which are most of the time under the "dialout" group (ttyS*, ttyUSB*, ttyACM*, ...).<br />
First, you must add the users which should be allowed to run minicom to a group with read and write access to the ttys you want to use, which are most of the time under the "dialout" group (ttyS*, ttyUSB*, ttyACM*, ...).<br />
Well, this part is not really minicom configuration, but it has to be done to use minicom as normal user, so here it is :)<br />
Well, this part is not really minicom configuration, but it has to be done to use minicom as normal user, so here it is :)<br />
Line 11: Line 11:
This will only be effective for the next login of the user "username". So if you are already logged in a graphical session and do not want to logout and login back, you can simply use the command "su username" in a terminal to get a new session in which you are in the dialout group for the current session and have access (in this terminal) to the ttys which are in the dialout group.
This will only be effective for the next login of the user "username". So if you are already logged in a graphical session and do not want to logout and login back, you can simply use the command "su username" in a terminal to get a new session in which you are in the dialout group for the current session and have access (in this terminal) to the ttys which are in the dialout group.


=== Store configurations as normal user ===
==== Store / modify configurations as normal user ====
Then you may want to be able to store new configurations.<br />
Then you may want to be able to store new configurations.<br />
Indeed, one option is to run "minicom -s" as root, change the configuration, and "Save setup as.." to store the configuration
Indeed, one option is to run "minicom -s" as root, change the configuration, and "Save setup as.." to store the configuration
Line 18: Line 18:


When you run minicom with a configuration name, for example "minicom [options] my_config" then minicom will also look for a configuration file named "$HOME/.minirc.my_config" ... in your home directory !<br />
When you run minicom with a configuration name, for example "minicom [options] my_config" then minicom will also look for a configuration file named "$HOME/.minirc.my_config" ... in your home directory !<br />
Of course, you can try to create your config manually by looking at examples in /usr/share/doc/minicom/examples or looking over the web for sample configurations, but there's a much more simple way :
Of course, you can try to create your config manually by looking at examples in /usr/share/doc/minicom/examples or looking over the web for sample configurations, but there's a much more simple way.<br />
* Create a file called, for example "$HOME/.minirc.ttyUSB0" which contains the following line : "pu port /dev/ttyUSB0" (replace "/dev/ttyUSB0" by the name of the tty you want to use).
I'm using "ttyUSB0" as the config name for the "/dev/ttyUSB0" tty as I feel like it's easy to remember, but the config name can be anything you would remember.<br />
echo "pu port /dev/ttyUSB0" > ~/.minirc.ttyUSB0
Run minicom with this config name (the tty must be present, plug your USB-serial adapter if it's not the case yet) :
I'm using "ttyUSB0" as the config name for the "/dev/ttyUSB0" tty as I feel like it's easy to remember, but the config name can be anything you would remember.
minicom -D /dev/ttyUSB0 ttyUSB0
Then run minicom with this config name (the tty must be present, plug your USB-serial adapter if it's not the case yet) :
You can now configure minicom by hitting "Ctrl+a" and "o" ... and instead of "Save setup as dfl" you get "Save setup as ttyUSB0". Make the required changes to your configuration (see below), and use this menu entry to save your configuration.
 
Now, to create many configurations (say, for ttyUSB1, ttyUSB2, ttyACM0, ...), you can simply copy the "~/.minirc.ttyUSB0" file and either use minicom menu or edit the copy directly and change the "pu port" line to get the same config for these other ttys.
 
== Configure Minicom ==
Most of the time, when you start minicom for embedded system development, the default configuration is not appropriate.<br />
The most common modifications to the configuration are the following ones :
$ minicom -D /dev/ttyUSB0 ttyUSB0
[Hit "Ctrl-a" and then "o" to enter configuration menu]
    --> Serial port setup
      A  -->  /dev/ttyUSB0    [You must make a change here or it will not get saved in configuration]
      E  -->  Bps/Par/Bits    [Opens Comm Parameters menu]
      -->  Comm Parameters
          E  -->  115200
          Q  -->  8N1 (8 data bits, No parity, 1 stop bit)
          [Hit Enter to exit sub menu]
      F  -->  Hardware Flow Control    [Set to No]
      [Hit Enter to exit sub menu]
    --> Screen and keyboard
      R  -->  Line Wrap                [Set to Yes]
      T  -->  Add carriage return      [Set to Yes]
    --> Save setup as ttyUSB0
    --> Exit                    [Exit from configuration menu]
[Hit "Ctrl-a" and then "q" to leave minicom]
Note that you must exit minicom ("Ctrl-a" and "q") in order to use the new configuration.
 
you can now run minicom with your new configuration :
  minicom ttyUSB0
  minicom ttyUSB0
You can now configure minicom by hitting "Ctrl+a" and "o" ... and instead of "Save setup as dfl" you get "Save setup as ttyUSB0". Make the required changes to your configuration, and use this menu entry to save your configuration.
Now, to create many configurations (say, for ttyUSB1, ttyUSB2, you can simply copy the "~/.minirc.ttyUSB0" file and even edit the copy directly and change the "pu port" line to get the same config for these other ttys.


== Minicom invocation ==
== Minicom invocation ==
A simple way to start minicom is, '''as regular user''':
A simple way to start minicom is, '''as regular user''' :
  minicom -ow -D /dev/ttyUSB0 [-C log_file]
  minicom -ow -D /dev/ttyUSB0 [-C log_file]


But if you've followed the steps of the previous section and saved your configuration under "ttyUSB0", then you can simply
But if you've followed the steps of the previous section and saved your configuration under "ttyUSB0" (file "~/.minirc.ttyUSB0"), then you can simply
  minicom ttyUSB0 [-C log_file]
  minicom ttyUSB0 [-C log_file]
The "-C log_file" option is not required, but if present it will create a file called "log_file" and log all trafic to it (or append to it if the file exists)
The "-C log_file" option is not required, but if present it will create a file called "log_file" and log all trafic to it (or append to it if the file exists)

Latest revision as of 02:54, 20 November 2019

Minicom (man page) is a serial communication program with many many features which make it very usefull to connect to targets.

Allow normal users to access ttys and store configurations

Despite what you will read on many places : you do not need to be root to run or configure minicom !!! (but you will need a well configured system).

Get access to ttys

First, you must add the users which should be allowed to run minicom to a group with read and write access to the ttys you want to use, which are most of the time under the "dialout" group (ttyS*, ttyUSB*, ttyACM*, ...).
Well, this part is not really minicom configuration, but it has to be done to use minicom as normal user, so here it is :)
This, of course, is done by the system administrator (root or any user allowed to run the adduser command) :

adduser username dialout

This will only be effective for the next login of the user "username". So if you are already logged in a graphical session and do not want to logout and login back, you can simply use the command "su username" in a terminal to get a new session in which you are in the dialout group for the current session and have access (in this terminal) to the ttys which are in the dialout group.

Store / modify configurations as normal user

Then you may want to be able to store new configurations.
Indeed, one option is to run "minicom -s" as root, change the configuration, and "Save setup as.." to store the configuration under /etc/minicom/.
But this will create system-wide configurations (Ok, you may be the only user of your system ... but that's not an excuse to do things the wrong way)

When you run minicom with a configuration name, for example "minicom [options] my_config" then minicom will also look for a configuration file named "$HOME/.minirc.my_config" ... in your home directory !
Of course, you can try to create your config manually by looking at examples in /usr/share/doc/minicom/examples or looking over the web for sample configurations, but there's a much more simple way.
I'm using "ttyUSB0" as the config name for the "/dev/ttyUSB0" tty as I feel like it's easy to remember, but the config name can be anything you would remember.
Run minicom with this config name (the tty must be present, plug your USB-serial adapter if it's not the case yet) :

minicom -D /dev/ttyUSB0 ttyUSB0

You can now configure minicom by hitting "Ctrl+a" and "o" ... and instead of "Save setup as dfl" you get "Save setup as ttyUSB0". Make the required changes to your configuration (see below), and use this menu entry to save your configuration.

Now, to create many configurations (say, for ttyUSB1, ttyUSB2, ttyACM0, ...), you can simply copy the "~/.minirc.ttyUSB0" file and either use minicom menu or edit the copy directly and change the "pu port" line to get the same config for these other ttys.

Configure Minicom

Most of the time, when you start minicom for embedded system development, the default configuration is not appropriate.
The most common modifications to the configuration are the following ones :

$ minicom -D /dev/ttyUSB0 ttyUSB0
[Hit "Ctrl-a" and then "o" to enter configuration menu]
   --> Serial port setup
     A   -->   /dev/ttyUSB0     [You must make a change here or it will not get saved in configuration]
     E   -->   Bps/Par/Bits     [Opens Comm Parameters menu]
      -->   Comm Parameters
         E  -->  115200
         Q  -->  8N1 (8 data bits, No parity, 1 stop bit)
         [Hit Enter to exit sub menu]
     F   -->   Hardware Flow Control    [Set to No]
     [Hit Enter to exit sub menu]
   --> Screen and keyboard
     R   -->   Line Wrap                [Set to Yes]
     T   -->   Add carriage return      [Set to Yes]
   --> Save setup as ttyUSB0
   --> Exit                     [Exit from configuration menu]
[Hit "Ctrl-a" and then "q" to leave minicom]

Note that you must exit minicom ("Ctrl-a" and "q") in order to use the new configuration.

you can now run minicom with your new configuration :

minicom ttyUSB0

Minicom invocation

A simple way to start minicom is, as regular user :

minicom -ow -D /dev/ttyUSB0 [-C log_file]

But if you've followed the steps of the previous section and saved your configuration under "ttyUSB0" (file "~/.minirc.ttyUSB0"), then you can simply

minicom ttyUSB0 [-C log_file]

The "-C log_file" option is not required, but if present it will create a file called "log_file" and log all trafic to it (or append to it if the file exists)