xref: /openbmc/obmc-console/README.md (revision dc0eec8d)
1## To Build
2Note: In addition to a toolchain and autoconf tools, this requires `autotools-archive` to be installed.
3
4To build this project, run the following shell commands:
5
6```
7./bootstrap.sh
8./configure ${CONFIGURE_FLAGS}
9make
10```
11
12To fully clean the repository, run:
13```
14./bootstrap.sh clean
15```
16
17## To Run Server
18Running the server requires a serial port (e.g. /dev/ttyS0):
19
20```
21touch obmc-console.conf
22./obmc-console-server --config obmc-console.conf ttyS0
23```
24
25## To Connect Client
26To connect to the server, simply run the client:
27
28```
29./obmc-console-client
30```
31
32To disconnect the client, use the standard `~.` combination.
33
34
35## Underlying design
36
37This shows how the host UART connection is abstracted within the BMC as a Unix
38domain socket.
39
40```
41               +--------------------------------------------------------------------------------------------+
42               |                                                                                            |
43               |       obmc-console-client      unix domain socket         obmc-console-server              |
44               |                                                                                            |
45               |     +---------------------+                           +------------------------+           |
46               |     | client.2200.conf    |  +---------------------+  | server.ttyVUART0.conf  |           |
47           +---+--+  +---------------------+  |                     |  +------------------------+  +--------+-------+
48Network    | 2200 +-->                     +->+ @obmc-console.host0 +<-+                        <--+ /dev/ttyVUART0 |   UARTs
49           +---+--+  | socket-id = "host0" |  |                     |  | socket-id = "host0"    |  +--------+-------+
50               |     |                     |  +---------------------+  |                        |           |
51               |     +---------------------+                           +------------------------+           |
52               |                                                                                            |
53               |                                                                                            |
54               |                                                                                            |
55               +--------------------------------------------------------------------------------------------+
56```
57
58This supports multiple independent consoles.  The socket-id is a unique
59portion for the unix domain socket created by the obmc-console-server
60instance. The server needs to know this because it needs to know what to name
61the pipe; the client needs to know it as it needs to form the abstract socket
62name to which to connect.
63