xref: /openbmc/u-boot/doc/README.NetConsole (revision 7f51898c1b170e0036e6931a17ada46e2b4fd52e)
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.
14*7f51898cSJoe HershbergerThe source / listening port can be configured separately by setting
15*7f51898cSJoe Hershbergerthe 'ncinport' environment variable and the destination port can be
16*7f51898cSJoe Hershbergerconfigured by setting the 'ncoutport' environment variable.
17eedcd078Swdenk
18b1bf6f2cSwdenkFor example, if your server IP is 192.168.1.1, you could use:
19b1bf6f2cSwdenk
20b1bf6f2cSwdenk	=> setenv nc 'setenv stdout nc;setenv stdin nc'
21b1bf6f2cSwdenk	=> setenv ncip 192.168.1.1
22b1bf6f2cSwdenk	=> saveenv
23b1bf6f2cSwdenk	=> run nc
24b1bf6f2cSwdenk
25b1bf6f2cSwdenk
2668ceb29eSwdenkOn the host side, please use this script to access the console:
2768ceb29eSwdenk
28bcb6dd91SMike Frysinger	tools/netconsole <ip> [port]
2968ceb29eSwdenk
30bcb6dd91SMike FrysingerThe script uses netcat to talk to the board over UDP.  It requires you to
31bcb6dd91SMike Frysingerspecify the target IP address (or host name, assuming DNS is working). The
32bcb6dd91SMike Frysingerscript can be interrupted by pressing ^T (CTRL-T).
33b1bf6f2cSwdenk
34443feb74SIgor MarnatBe aware that in some distributives (Fedora Core 5 at least)
35443feb74SIgor Marnatusage of nc has been changed and -l and -p options are considered
36443feb74SIgor Marnatas mutually exclusive. If nc complains about options provided,
37443feb74SIgor Marnatyou can just remove the -p option from the script.
38443feb74SIgor Marnat
3925d6712aSwdenkIt turns out that 'netcat' cannot be used to listen to broadcast
40eedcd078Swdenkpackets. We developed our own tool 'ncb' (see tools directory) that
41eedcd078Swdenklistens to broadcast packets on a given port and dumps them to the
421c20e4a9SMike Frysingerstandard output.  It will be built when compiling for a board which
431c20e4a9SMike Frysingerhas CONFIG_NETCONSOLE defined.  If the netconsole script can find it
441c20e4a9SMike Frysingerin PATH or in the same directory, it will be used instead.
45b1bf6f2cSwdenk
4668ceb29eSwdenkFor Linux, the network-based console needs special configuration.
4768ceb29eSwdenkMinimally, the host IP address needs to be specified. This can be
4868ceb29eSwdenkdone either via the kernel command line, or by passing parameters
4968ceb29eSwdenkwhile loading the netconsole.o module (when used in a loadable module
5068ceb29eSwdenkconfiguration). Please refer to Documentation/networking/logging.txt
5168ceb29eSwdenkfile for the original Ingo Molnar's documentation on how to pass
5268ceb29eSwdenkparameters to the loadable module.
5368ceb29eSwdenk
5468ceb29eSwdenkThe format of the kernel command line parameter (for the static
5568ceb29eSwdenkconfiguration) is as follows:
5668ceb29eSwdenk
5768ceb29eSwdenk  netconsole=[src-port]@[src-ip]/[<dev>],[tgt-port]@<tgt-ip>/[tgt-macaddr]
5868ceb29eSwdenk
5968ceb29eSwdenkwhere
6068ceb29eSwdenk
6168ceb29eSwdenk  src-port	source for UDP packets
6268ceb29eSwdenk		(defaults to 6665)
6368ceb29eSwdenk  src-ip	source IP to use
6468ceb29eSwdenk		(defaults to the interface's address)
6568ceb29eSwdenk  dev		network interface
6668ceb29eSwdenk		(defaults to eth0)
6768ceb29eSwdenk  tgt-port	port for logging agent
6868ceb29eSwdenk		(defaults to 6666)
6968ceb29eSwdenk  tgt-ip	IP address for logging agent
7068ceb29eSwdenk		(this is the required parameter)
7168ceb29eSwdenk  tgt-macaddr	ethernet MAC address for logging agent
7268ceb29eSwdenk		(defaults to broadcast)
7368ceb29eSwdenk
7468ceb29eSwdenkExamples:
7568ceb29eSwdenk
7668ceb29eSwdenk  netconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc
7768ceb29eSwdenk
7868ceb29eSwdenkor
7968ceb29eSwdenk
8068ceb29eSwdenk  netconsole=@/,@192.168.3.1/
8168ceb29eSwdenk
8268ceb29eSwdenkPlease note that for the Linux networked console to work, the
8368ceb29eSwdenkethernet interface has to be up by the time the netconsole driver is
8468ceb29eSwdenkinitialized. This means that in case of static kernel configuration,
8568ceb29eSwdenkthe respective Ethernet interface has to be brought up using the "IP
8668ceb29eSwdenkAutoconfiguration" kernel feature, which is usually done by defaults
8768ceb29eSwdenkin the ELDK-NFS-based environment.
8868ceb29eSwdenk
8968ceb29eSwdenkTo browse the Linux network console output, use the 'netcat' tool invoked
9068ceb29eSwdenkas follows:
9168ceb29eSwdenk
9268ceb29eSwdenk	nc -u -l -p 6666
9325d6712aSwdenk
9425d6712aSwdenkNote that unlike the U-Boot implementation the Linux netconsole is
9525d6712aSwdenkunidirectional, i. e. you have console output only in Linux.
96