xref: /openbmc/u-boot/doc/README.NetConsole (revision 443feb740584e406efa203af909fe2926608e8d5)
168ceb29eSwdenk
268ceb29eSwdenkIn U-Boot, we implemented the networked console via the standard
368ceb29eSwdenk"devices" mechanism, which means that you can switch between the
468ceb29eSwdenkserial and network input/output devices by adjusting the 'stdin' and
568ceb29eSwdenk'stdout' environment variables. To switch to the networked console,
668ceb29eSwdenkset either of these variables to "nc". Input and output can be
768ceb29eSwdenkswitched independently.
868ceb29eSwdenk
9eedcd078SwdenkWe use an environment variable 'ncip' to set the IP address and the
10eedcd078Swdenkport of the destination. The format is <ip_addr>:<port>. If <port> is
11eedcd078Swdenkomitted, the value of 6666 is used. If the env var doesn't exist, the
12eedcd078Swdenkbroadcast address and port 6666 are used. If it is set to an IP
13eedcd078Swdenkaddress of 0 (or 0.0.0.0) then no messages are sent to the network.
14eedcd078Swdenk
15b1bf6f2cSwdenkFor example, if your server IP is 192.168.1.1, you could use:
16b1bf6f2cSwdenk
17b1bf6f2cSwdenk	=> setenv nc 'setenv stdout nc;setenv stdin nc'
18b1bf6f2cSwdenk	=> setenv ncip 192.168.1.1
19b1bf6f2cSwdenk	=> saveenv
20b1bf6f2cSwdenk	=> run nc
21b1bf6f2cSwdenk
22b1bf6f2cSwdenk
2368ceb29eSwdenkOn the host side, please use this script to access the console:
2468ceb29eSwdenk
2568ceb29eSwdenk+++++++++++++++++++++++++++++++++++++++++++
2668ceb29eSwdenk#! /bin/bash
2768ceb29eSwdenk
28b1bf6f2cSwdenk[ $# = 1 ] || { echo "Usage: $0 target_ip" >&2 ; exit 1 ; }
2968ceb29eSwdenkTARGET_IP=$1
3068ceb29eSwdenk
3168ceb29eSwdenkstty -icanon -echo intr ^T
3268ceb29eSwdenknc -u -l -p 6666 < /dev/null &
3368ceb29eSwdenknc -u ${TARGET_IP} 6666
3468ceb29eSwdenkstty icanon echo intr ^C
3568ceb29eSwdenk+++++++++++++++++++++++++++++++++++++++++++
3668ceb29eSwdenk
37b1bf6f2cSwdenkThe script expects exactly one argument, which is interpreted as  the
38b1bf6f2cSwdenktarget IP address (or host name, assuming DNS is working). The script
39b1bf6f2cSwdenkcan be interrupted by pressing ^T (CTRL-T).
40b1bf6f2cSwdenk
41*443feb74SIgor MarnatBe aware that in some distributives (Fedora Core 5 at least)
42*443feb74SIgor Marnatusage of nc has been changed and -l and -p options are considered
43*443feb74SIgor Marnatas mutually exclusive. If nc complains about options provided,
44*443feb74SIgor Marnatyou can just remove the -p option from the script.
45*443feb74SIgor Marnat
4625d6712aSwdenkIt turns out that 'netcat' cannot be used to listen to broadcast
47eedcd078Swdenkpackets. We developed our own tool 'ncb' (see tools directory) that
48eedcd078Swdenklistens to broadcast packets on a given port and dumps them to the
49eedcd078Swdenkstandard output. use it as follows:
50eedcd078Swdenk
51eedcd078Swdenk+++++++++++++++++++++++++++++++++++++++++++
52eedcd078Swdenk#! /bin/bash
53eedcd078Swdenk
54b1bf6f2cSwdenk[ $# = 1 ] || { echo "Usage: $0 target_ip" >&2 ; exit 1 ; }
55b1bf6f2cSwdenkTARGET_IP=$1
56b1bf6f2cSwdenk
57eedcd078Swdenkstty icanon echo intr ^T
58eedcd078Swdenk./ncb &
59b1bf6f2cSwdenknc -u ${TARGET_IP} 6666
60eedcd078Swdenkstty icanon echo intr ^C
61eedcd078Swdenkkill 0
62eedcd078Swdenk+++++++++++++++++++++++++++++++++++++++++++
63eedcd078Swdenk
64b1bf6f2cSwdenkAgain, this script takes exactly one argument, which is interpreted
65b1bf6f2cSwdenkas the target IP address (or host name, assuming DNS is working). The
66b1bf6f2cSwdenkscript can be interrupted by pressing ^T (CTRL-T).
67b1bf6f2cSwdenk
68b1bf6f2cSwdenkThe 'ncb' tool can be found in the tools directory; it will not be
69b1bf6f2cSwdenkbuilt by default so you will ither have to adjust the Makefile or
70b1bf6f2cSwdenkbuild it manually.
71b1bf6f2cSwdenk
72b1bf6f2cSwdenk
7368ceb29eSwdenkFor Linux, the network-based console needs special configuration.
7468ceb29eSwdenkMinimally, the host IP address needs to be specified. This can be
7568ceb29eSwdenkdone either via the kernel command line, or by passing parameters
7668ceb29eSwdenkwhile loading the netconsole.o module (when used in a loadable module
7768ceb29eSwdenkconfiguration). Please refer to Documentation/networking/logging.txt
7868ceb29eSwdenkfile for the original Ingo Molnar's documentation on how to pass
7968ceb29eSwdenkparameters to the loadable module.
8068ceb29eSwdenk
8168ceb29eSwdenkThe format of the kernel command line parameter (for the static
8268ceb29eSwdenkconfiguration) is as follows:
8368ceb29eSwdenk
8468ceb29eSwdenk  netconsole=[src-port]@[src-ip]/[<dev>],[tgt-port]@<tgt-ip>/[tgt-macaddr]
8568ceb29eSwdenk
8668ceb29eSwdenkwhere
8768ceb29eSwdenk
8868ceb29eSwdenk  src-port	source for UDP packets
8968ceb29eSwdenk		(defaults to 6665)
9068ceb29eSwdenk  src-ip	source IP to use
9168ceb29eSwdenk		(defaults to the interface's address)
9268ceb29eSwdenk  dev		network interface
9368ceb29eSwdenk		(defaults to eth0)
9468ceb29eSwdenk  tgt-port	port for logging agent
9568ceb29eSwdenk		(defaults to 6666)
9668ceb29eSwdenk  tgt-ip	IP address for logging agent
9768ceb29eSwdenk		(this is the required parameter)
9868ceb29eSwdenk  tgt-macaddr	ethernet MAC address for logging agent
9968ceb29eSwdenk		(defaults to broadcast)
10068ceb29eSwdenk
10168ceb29eSwdenkExamples:
10268ceb29eSwdenk
10368ceb29eSwdenk  netconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc
10468ceb29eSwdenk
10568ceb29eSwdenkor
10668ceb29eSwdenk
10768ceb29eSwdenk  netconsole=@/,@192.168.3.1/
10868ceb29eSwdenk
10968ceb29eSwdenkPlease note that for the Linux networked console to work, the
11068ceb29eSwdenkethernet interface has to be up by the time the netconsole driver is
11168ceb29eSwdenkinitialized. This means that in case of static kernel configuration,
11268ceb29eSwdenkthe respective Ethernet interface has to be brought up using the "IP
11368ceb29eSwdenkAutoconfiguration" kernel feature, which is usually done by defaults
11468ceb29eSwdenkin the ELDK-NFS-based environment.
11568ceb29eSwdenk
11668ceb29eSwdenkTo browse the Linux network console output, use the 'netcat' tool invoked
11768ceb29eSwdenkas follows:
11868ceb29eSwdenk
11968ceb29eSwdenk	nc -u -l -p 6666
12025d6712aSwdenk
12125d6712aSwdenkNote that unlike the U-Boot implementation the Linux netconsole is
12225d6712aSwdenkunidirectional, i. e. you have console output only in Linux.
123