[TUTORIAL] HOWTO: Proxmox host serial console (UEFI-boot), useful when passthrough your only GPU

jena

Member
Jul 9, 2020
47
7
13
33
The original ideas are from:
https://forum.proxmox.com/threads/serial-port-on-host-to-proxmox-console.81045/
https://help.ubuntu.com/community/SerialConsoleHowto
https://tldp.org/HOWTO/Remote-Serial-Console-HOWTO/configure-kernel.html
https://www.rogerirwin.co.nz/open-source/enabling-a-serial-port-console/

The OP and Ubuntu tutorial used GRUB boot.
However, I cannot find definitive answers for the UEFI-boot equivalent.

Hardware requirement:
1. Proxmox host: DTE serial port (see Wikipedia-DataTerminalEquipment )
2. USB to Null Modem Serial Adapter Cable (which connects to a DTE device, i.e. your Proxmox host) The one worked for me is Tripp Lite U209-18N-NULL
3. Another computer or a laptop

Proxmox host side
1.
# For a USB serial adaptor
systemctl enable serial-getty@ttyUSB#.service

# For a built in serial port /dev/ttyS0
systemctl enable serial-getty@ttyS#.service

tty0 is your default virtual console, i.e. video card output
ttyS# is your COM port.
If your motherboard has onboard COM port, it is likely to be COM1 (ttyS0);
Like mine, adding a PCIE-serial card, use lspci -v to find the PCIE card hardware id.
For USB-serial port: ttyUSB#
For example:
44:00.0 Serial controller: MosChip Semiconductor Technology Ltd. MCS9900 Multi-I/O Controller

then dmesg | grep tty to find the ttyS#
It matches PCIE 44:00 hardware id
Code:
[    0.000000] printk: console [tty0] enabled
[    0.######] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.######] 0000:44:00.0: ttyS4 at I/O 0x4000 (irq = 66, base_baud = 115200) is a ST16650V2
[    1.######] tty ttyS6: hash matches

2.
To prevent bricking anything, I first tried to edit a temporary kernel/cmdline by press e when grub boot version select appears.
To have permanent setting, edit
(uefi boot) /etc/kernel/cmdline instead of (legacy boot) /etc/default/grub

add at the end
console=tty0 console=ttyS#,115200n8

3. pve-efiboot-tool refresh and reboot

The other computer
1. Install putty
2. connect the usb serial null cable to both Proxmox host and this computer
3. In Device Manager, find COM port number set baud rate to 115200, leave other default (default: parity=none, data bits=8, stop bits=1, flow control=none)
4. In putty, type in COM port and baud rate and connect.
5. If you connect before boot, putty will print out kernel messages. If you connect after boot or reconnect putty, it might show blank, just press enter, then login should show up.
 
Last edited:
I always add a virtual serial console to VMs with GPU passthrough (in a very similar way) but thank you for showing how to do it for the Proxmox host.
 
Thanks for your write-up. Actually the step 1 is not required as systemd automatically creates the serial-getty for login if the console=ttyS# kernel boot parameter is present. I just did your step 2 and 3 and everything works fine.

However one question regarding the order of the two console parameters. The kernel documentation states:

Code:
You can specify multiple console= options on the kernel command line.
Output will appear on all of them. The last device will be used when
you open ``/dev/console``.

Concerning this information, shouldn't we put console=tty0 at the end to be compatible with default behavior?
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get your own in 60 seconds.

Buy now!