summaryrefslogtreecommitdiff
path: root/docs/services/console-server.rst
blob: 50efa865ec0dd4e3280abbfc1a256df327df1cc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
.. _console_server:

##############
Console-Server
##############

Starting of with VyOS 1.3 (equuleus) we added support for running VyOS as an
Out-of-Band Management device which provides remote access by means of SSH to
directly attached serial interfaces.

Serial interfaces can be any interface which is directly connected to the CPU
or chipset (mostly known as a ttyS interface in Linux) or any other USB to
serial converter (Prolific PL2303 or FTDI FT232/FT4232 based chips).

If you happened to use a Cisco NM-16A - Sixteen Port Async Network Module or
NM-32A - Thirty-two Port Async Network Module - this is your VyOS replacement.

Setup
=====

In the past serial interface have been defined as ttySx and ttyUSBx where x was
an instance number of the serial interface. It was discovered that from system
boot to system boot the mapping of USB based serial interfaces will differ,
depending which driver was loaded first by the operating system. This will become
rather painful if you not only have serial interfaces for a console server
connected but in addition also a serial backed :ref:`wwan-interface`.

To overcome this issue and the fact that in almost 50% of all cheap USB to serial
converters there is no serial number programmed, the USB to serial interface is
now directly identified by the USB root bridge and bus it connects to. This
somehow mimics the new network interface definitions we see in recend Linux
distributions.

For additional details you can refer to https://phabricator.vyos.net/T2490.

.. opcmd:: show system usb

  Retrieve a tree like representation of all connected USB devices.

  .. note:: If a device is unplugged and re-plugged it will receive a new
    Port, Dev, If identification.

  .. code-block:: none

    vyos@vyos:~$ show system usb
    /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
        |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 3: Dev 4, If 0, Class=Vendor Specific Class, Driver=qcserial, 480M
            |__ Port 3: Dev 4, If 2, Class=Vendor Specific Class, Driver=qcserial, 480M
            |__ Port 3: Dev 4, If 3, Class=Vendor Specific Class, Driver=qcserial, 480M
            |__ Port 3: Dev 4, If 8, Class=Vendor Specific Class, Driver=qmi_wwan, 480M
    /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
    /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
        |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=pl2303, 12M
        |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 4: Dev 5, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
            |__ Port 4: Dev 5, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
            |__ Port 4: Dev 5, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
            |__ Port 4: Dev 5, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
            |__ Port 3: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 3: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M
                    |__ Port 4: Dev 8, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                    |__ Port 4: Dev 8, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                    |__ Port 4: Dev 8, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                    |__ Port 4: Dev 8, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                |__ Port 4: Dev 7, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                |__ Port 4: Dev 7, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                |__ Port 4: Dev 7, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                |__ Port 4: Dev 7, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M


.. opcmd:: show system usb

  Retrieve a list and description of all connected USB serial devices. The device name
  displayed, e.g. `usb0b2.4p1.0` can be directly used when accessing the serial console
  as console-server device.

  .. code-block:: none

    vyos@vyos$ show system usb serial
    Device           Model               Vendor
    ------           ------              ------
    usb0b1.3p1.0     MC7710              Sierra Wireless, Inc.
    usb0b1.3p1.2     MC7710              Sierra Wireless, Inc.
    usb0b1.3p1.3     MC7710              Sierra Wireless, Inc.
    usb0b1p1.0       USB-Serial_Controller_D Prolific Technology, Inc.
    usb0b2.3.3.4p1.0 Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.3.3.4p1.1 Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.3.3.4p1.2 Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.3.3.4p1.3 Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.3.4p1.0   Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.3.4p1.1   Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.3.4p1.2   Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.3.4p1.3   Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.4p1.0     Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.4p1.1     Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.4p1.2     Quad_RS232-HS       Future Technology Devices International, Ltd
    usb0b2.4p1.3     Quad_RS232-HS       Future Technology Devices International, Ltd


Configuration
=============

Between computers, the most common configuration used was "8N1": eight bit
characters, with one start bit, one stop bit, and no parity bit. Thus 10 Baud
times are used to send a single character, and so dividing the signalling
bit-rate by ten results in the overall transmission speed in characters per
second. This is also the default setting if none of those options are defined.

.. cfgcmd:: set service console-server <device> data-bits

  Configure either seven or eight data bits. This defaults to eight data
  bits if left unconfigured.

.. cfgcmd:: set service console-server <device> description

  A user friendly description identifying the connected peripheral.

.. cfgcmd:: set service console-server <device> parity [even | odd | none]

  Set the parity option for the console. If unset this will default to none.

.. cfgcmd:: set service console-server <device> stop-bits

  Configure either one or two stop bits. This defaults to one stop bits if
  left unconfigured.

.. cfgcmd:: set service console-server <device> speed <baudrate>

  .. note:: USB to serial converters will handle most of their work in software
     so you should be carefull with the selected baudrate as some times they
     can't cope with the expected speed.

Remote Access
-------------

Each individual configured console-server device can be directly exposed to
the outside world. A user can directly connect via SSH to the configured
port.

.. cfgcmd:: set service console-server <device> ssh port <port>

  Accept SSH connections for the given `<device>` on TCP port `<port>`.
  After successfull authentication the user will be directly dropped to
  the connected serial device.

  .. hint:: Multiple users can connect to the same serial device but only
     one is allowed to write to the console port.

Operation
=========

.. opcmd:: show console-server ports

  Show configured serial ports and their respective interface configuration.

  .. code-block:: none

    vyos@vyos:~$ show console-server ports
     usb0b2.4p1.0             on /dev/serial/by-bus/usb0b2.4p1.0@ at   9600n

.. opcmd:: show console-server user

  Show currently connected users.

  .. code-block::

    vyos@vyos:~$ show console-server user
     usb0b2.4p1.0               up   vyos@localhost


.. opcmd:: connect console-server <device>

  Locally connect to serial port identified by `<device>`.

  .. code-block:: none

    vyos@vyos-r1:~$ connect console-server usb0b2.4p1.0
    [Enter `^Ec?' for help]
    [-- MOTD -- VyOS Console Server]

    vyos-r2 login:

  .. hint:: Multiple users can connect to the same serial device but only
     one is allowed to write to the console port.

  .. hint:: The sequence ``^Ec?`` translates to: ``Ctrl+E c ?``. To quit
     the session use: ``Ctrl+E c .``