Skip to content

Repository files navigation

mmcterm

Terminal for the custom "serial over IPMB" protocol used by DMMC-STAMP.

Installation

pip3 install mmcterm

Usage

mmcterm [-h] [-v] [-c CHANNEL] [-t INTERVAL] [-l] [-d] [-i] [-m MAX_PKT_SIZE] [--vadatech-quirk] mch_addr mmc_addr
DESY MMC Serial over IPMB console
positional arguments:
mch_addr IP address or hostname of MCH
mmc_addr IPMB-L address of MMC or "AMCn" (n=1..12)
options:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-c CHANNEL, --channel CHANNEL
console channel (default 0)
-t INTERVAL, --interval INTERVAL
polling interval in ms (default 10)
-l, --list list available channels
-d, --debug pyipmi debug mode
-i, --ipmitool make pyipmi use ipmitool instead of native rmcp
-m MAX_PKT_SIZE, --max-pkt-size MAX_PKT_SIZE
max IPMB packet size to use (Higher numbers give better performance, but can break depending on MCH model)
--vadatech-quirk Enable ipmi library quirk for Vadatech support (ignore req seq numbers)

Channels

The DMMC-STAMP always provides channel 0 for the MMC console. This is also the default channel, if the -c argument is not given to mmcterm. Depending on the board implementation, there can be up to 2 additional channels for UARTs of payload FPGAs. The presence and names of those channels can be queried with the -l argument.

Note that only one channel can be opened to a MMC at the same time.

Example

Open a console on AMC board at IPMB address 0x7a connected to the MCH mskmchhvf1.tech.lab:

mmcterm mskmchhvf1.tech.lab 0x7a

Max packet size

Without the -m option, mmcterm uses the standard maximum IPMB packet size of 32 bytes. Due to the limitations of the IPMI protocol, this can quickly become a bottleneck, esp. when used with a SoC running Linux. To mitigate this bottleneck, bigger packet sizes can be set with -m. For NAT MCHs, -m 100 was found to be working, even though it is more than 3 times the standard packet size.

Protocol description

"Serial over IPMB" is a lightweight "serial data forwarding" protocol using custom IPMI messages.

Get channel info

NetFn 0x30, Command 0xf0

Request:

ByteContents
0Channel Number

Response:

ByteContents
0..nChannel Name

Start/stop SOI session

NetFn 0x30, Command 0xf1

Request:

ByteContents
0Channel Number
11 = start, 0 = stop
2Max packet size (optional)

Poll/exchange data

NetFn 0x30, Command 0xf2

Request:

ByteContents
0..nSend data from terminal to MMC

Response:

ByteContents
0..nReceive data from MMC to terminal

About

Terminal for the custom "serial over IPMB" protocol used by DMMC-STAMP

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages