Author: Michael Hanselmann. Updated: April 20, 2024.

This document is provided as-is without any warranty. The author is and will not be responsible for any damages that may occur due to its use.

The Lenovo ThinkCentre M720 Tiny is a small desktop computer released in 2019. As of 2024 it has become quite popular as a home server due to its size and relative expandability.

Serial console redirection is a feature implemented by a system's firmware (BIOS) providing access to the firmware setup and early boot output via a serial port, most commonly RS-232. Such features are usually only made available on hardware marketed for servers. A bootloader such as GRUB and a subsequently loaded operating system will usually take over the serial port (necessitated by them not operating via BIOS I/O routines).

The ThinkCentre M720 firmware has the configuration options for serial console redirection just hidden and the firmware still contains the implementation. All it takes is setting the correct options via UEFI variables.

This article is specifically for the M720 Tiny. The firmware download page lists other hardware as using the same firmware. There's a good chance the same instructions work on these:

The configuration changes were tested with firmware version M1UKT75A (1.0.0.117) from March 4, 2024. Initial tests used an earlier version from 2023 and I updated the firmware via the redirected console.

The COM1 RS-232 serial port must be installed (ttyS0). COM2 or USB-to-serial adapters are not supported. The Lenovo FRU part number for the M720 is 04X2733.

Contents

Configuration

UEFI variables, offset and value (format variable:offset=value as used by UefiVarTool):

# Boot (0x271A)

## Quick Boot (checkbox)
Setup:0x19=1

## Quiet Boot (checkbox)
Setup:0x24=1

## Redirection Support
Setup:0x124D=1

# Advanced > Serial Port Console Redirection (0x280E)

## Console Redirection on COM0 (checkbox), settings on form 0x2811
Setup:0x1302=1

## Console Redirection on missing port (checkbox), settings on form 0x281B
Setup:0x1303=0

## Windows Emergency Management Services (EMS), Console Redirection (checkbox), settings on form 0x280F
Setup:0x1310=1

# Serial Port Console Redirection > Console Redirection Settings (0x280F)

## Out-of-Band Mgmt Port (COM0)
Setup:0x1311=0

## Terminal Type (VT-UTF8)
Setup:0x1312=2

## Bits per second (115200)
Setup:0x1313=7

## Flow Control (None)
Setup:0x1314=0

# Serial Port Console Redirection > Legacy Console Redirection Settings (0x2810)

## Redirection COM Port (COM0)
Setup:0x1318=0

## Resolution (0=80x24, 1=80x25)
Setup:0x130C=0

## Redirect After POST (0=always enable, 1=bootloader)
Setup:0x130F=0

# Serial Port Console Redirection > COM0 (0x2811)

## Bits per second (115200)
Setup:0x12F8=7

## Data Bits (8)
Setup:0x12FA=8

## Parity (None)
Setup:0x12FC=1

## Stop Bits (1)
Setup:0x12FE=1

## Flow Control (None)
Setup:0x1300=0

## Terminal Type (VT-UTF8)
Setup:0x1304=2

## VT-UTF8 Combo Key Support (checkbox)
Setup:0x1306=1

## Recorder Mode (checkbox)
Setup:0x1308=0

## Resolution 100x31 (checkbox)
Setup:0x130A=0

## Putty KeyPad (VT100)
Setup:0x130D=1

Obtaining an UEFI shell binary

Either from Arch Linux' edk2-shell package at usr/share/edk2-shell/x64/Shell_Full.efi or pbatard/UEFI-Shell which contains binaries derived from EDK2 stable releases.

Writing UEFI variables

GeographicCone/UefiVarTool enables reading and writing of individual UEFI variables at a byte level. Its configuration can be provided via standard input (which must be formatted in UTF-16LE):

fs0:
uvt.efi --simulate < config.txt
uvt.efi < config.txt
reset

Another option is datasone/setup_var.efi, a modified GRUB with commands to read and write UEFI variables

Function keys

F1Esc1
F2Esc2
F3Esc3
F4Esc4
F5Esc5
F6Esc6
F7Esc7
F8Esc8
F9Esc9
F10Esc0
F11Esc!
F12Esc@
Ctrl+Alt+Del EscShift+R EscR EscShift+R

Background

Lenovo's ThinkCentre M720 uses AMI Aptio V for its firmware. The Setup section can be extracted using LongSoft/UEFITool. LongSoft/IFRExtractor-RS converts the binary data into UEFI Internal Form Representation (IFR).