Serial Console Capture (SCC)
The BMC has 2 UART ports:
UART0 (aka UART1 in HW) which connects to BlueField’s UART0 and allows the BMC to access the BlueField’s console
UART4 (aka UART5 in HW) which connects to RJ45 and is used for the BMC console
This section gives the steps on how to achieve a serial capture of the BlueField console via BMC UART0.
The serial capture enables us to capture the most recent messages on the BlueField’s console and store them in a buffer. It could be the BlueField’s booting messages, panic messages, or commands typed by the user.
The size of the captured buffer is limited to 65535 bytes, and can be controlled by an IPMI tool command or the /etc/ipmi/mlxbw.lan.conf file from the BMC. The buffer can be dumped using the IPMI SOL session 2 which is explained in more details below.
The first thing to do is to make sure that the BMC’s UART is connected to the BlueField’s UART.
On the BlueField Reference Platform board, for example, the JP1 header allows the UART connection between the BMC and the BlueField. Jumpers should be used to connect the following pins on JP1, if SOL is not working:
Pin 2 (SE_BMC0_RS232_RXD) ↔ pin 1 (SE_SOC0_RS232_TXD)
Pin 4 (GND) ↔ pin 3 (GND)
Pin 6 (SE_BMC0_RS232_TXD) ↔ pin 5 (SE_SOC0_RS232_RXD)
The next step is to set up serial console redirection using the BMC which allows administrators to remotely view the content of the BlueField’s console.
To set up the serial console redirection, configure an SOL session in the /etc/ipmi/mlxbw.lan.conf file located on the BMC as follows:
sol <device> <baud_rate> [nortscts] [history=buffer_size[,backupfile=filename]] [historyfru=N]
Where:
device – the serial console is configured as “/dev/ttyS0”
baud rate – 115200
nortscts – disables RTS and CTS on the port. It changes the RTS output line, but does not listen to CTS.
history – enables serial console redirection and sets the history buffer size. The maximum buffer size is always 65535 bytes. This means that DCD and CTS are always enabled to the device, and constantly collect history for the device. Connecting to SOL interface 2 causes the full history buffer to be dumped.
backupfile – enables storing the history if the BMC shuts down so the data persists while rebooting
historyfru – assigns the BMC FRU device which fetches the contents of the history buffer
The following is an example for the above command on a BlueField Reference Platform board:
sol "/dev/ttyS0"
115200
history=4000
,backupfile=/home/root/serial_history historyfru=10
Normally the data is left in the history buffer when read. If you want the history data to be cleared from the buffer on read, add “readclear”:
sol "/dev/ttyS0"
115200
nortscts readclear
Whenever modifications are made to the /etc/ipmi/mlxbw.lan.conf file, the BMC needs to be rebooted to apply the changes. Once the BMC is up, make sure there is activity on the BlueField’s console, otherwise the captured buffer comes up empty.
The captured data from the BlueField’s console can be dumped using sol session 2:
ipmitool -I lanplus -H <bmc_ip> -U ADMIN -P ADMIN sol activate instance=2
If you want to end the session just enter “~.”.
Sometimes, a session remains active even after it is ended, you may deactivate it by running:
ipmitool -I lanplus -H <bmc_ip> -U ADMIN -P ADMIN sol deactivate instance=2
Make sure to have IPMI tools installed on your server.
Adding [historyfru=N] to the serial console redirection set up file enables FRU N to fetch the contents of the history buffer.
The following command dumps the binary data pertaining to the specified FRU to an FRU file:
ipmitool -I lanplus -H <bmc_ip> -U ADMIN -P ADMIN fru read <fru-id> <fru-file>
Output example:
Fru Size : 2068
bytes
Done
You may convert the binary FRU file to a human readable text format file by using the following command:
ipmitool -I lanplus -H <bmc_ip> -U ADMIN -P ADMIN ekanalyzer frushow a1=<fru file>
Note that the aforementioned command outputs general information about the FRU such as the manufacturer’s ID and device ID. That information is human readable, but then the BlueField’s console text will be in a hexadecimal format. So this is not as helpful as using SOL session 2 to dump the captured buffer.
If the mlxbw.lan.conf file has been previously set up to have backupfile=<history_file>, and you activated an SOL session before rebooting the BMC, then, the backup file will contain the content of the captured buffer from the last active SOL session.
Changing the Buffer Size
Once the SOL 2 connection is made, the buffer size can be overridden by running:
ipmitool -I lanplus -H <bmc_ip> -U ADMIN -P ADMIN raw 0x2e
0x01
0x74
0x9f
0x00
2
74
9f 00
Where:
0x2e – OEM command NETNF
0x1 – flag for SET
0x74 0x9f 0x00 – OpenIPMI IANA code
2 is the buffer size value (will be multiplied by 1024)
74 9f 00 – what is returned is the OpenIPMI IANA code
Note that you can only change the buffer size to a smaller size than the default size you set in the mlxbw.lan.conf file. For instance, if the buffer size was set as history=4000 in the mlxbw.lan.conf file, the highest buffer size value that you can set using the raw command is 3 because 3x1024 = 3072. If you try to set the size of the buffer to 4 (4x1024=4096) that would be higher than 4000, which causes your request to be discarded.
Reading the Buffer Size
To get the buffer size, run:
ipmitool -I lanplus -H <bmc_ip> -U ADMIN -P ADMIN raw 0x2e
0x02
0x74
0x9f
0x00
74
9f 00
02
Where:
0x2e – OEM command NETNF
0x2 – flag for GET
0x74 0x9f 0x00 – OpenIPMI IANA code
74 9f 00 02 – what is returned is the OpenIPMI IANA code, and “02” is the size of the buffer divided by 1024