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:
| Byte | Contents |
|---|---|
| 0 | Channel Number |
Response:
| Byte | Contents |
|---|---|
| 0..n | Channel Name |
Start/stop SOI session
NetFn 0x30, Command 0xf1
Request:
| Byte | Contents |
|---|---|
| 0 | Channel Number |
| 1 | 1 = start, 0 = stop |
| 2 | Max packet size (optional) |
Poll/exchange data
NetFn 0x30, Command 0xf2
Request:
| Byte | Contents |
|---|---|
| 0..n | Send data from terminal to MMC |
Response:
| Byte | Contents |
|---|---|
| 0..n | Receive data from MMC to terminal |
Metadata
Release files for mmcterm 0.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mmcterm-0.2.4.tar.gz | 11.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mmcterm-0.2.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.2 kB
Release files / mmcterm-0.2.4.tar.gz
| Download URL | mmcterm-0.2.4.tar.gz |
|---|---|
| Size | 11.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8b11e7bd38f3473ffe97d5dccc469668cac5ea9d216f941dc920d86fa7156541
|
|
BLAKE2b-256 checksum How to use checksums |
673311b8637ea6c5d81f9eddc01764e65355311479e67f57b791aa13b71549a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / mmcterm-0.2.4-py3-none-any.whl
| Download URL | mmcterm-0.2.4-py3-none-any.whl |
|---|---|
| Size | 11.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ecc9a0fc4fdf29744fec4f1c982095a95331faf5b302a6d2b76dd72956c95c14
|
|
BLAKE2b-256 checksum How to use checksums |
ee090e41e8150b401c9073aa948eddcbb8eb07eec57a2fdef91575e3c5ab5238
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|