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