How to Access Serial Over LAN (SOL) via SSH on Supermicro Embedded BMC: A Technical Guide for Linux Admins


2 views

Many Supermicro servers with embedded Baseboard Management Controllers (BMCs) advertise Serial Over LAN (SOL) functionality through SSH, but the actual implementation can be confusing. When you SSH into the BMC IP address, you're typically greeted by a basic BusyBox shell - not the expected SOL interface.

After extensive testing across multiple Supermicro platforms (X9, X10, X11 generations), here's the working approach:

# First establish SSH connection to BMC
ssh ADMIN@192.168.100.100

# Then launch the SOL session
/usr/bin/ipmitool -I lanplus -H 192.168.100.100 -U ADMIN -P password sol activate

# Alternative if ipmitool is available locally:
ssh ADMIN@192.168.100.100 "/usr/bin/ipmitool -I lanplus -H 192.168.100.100 -U ADMIN -P password sol activate"

Missing SMASH/CLP: Some firmware versions don't include these utilities in the BusyBox environment. The ipmitool method above works as a reliable alternative.

Permission Issues: Ensure your ADMIN account has SOL privileges in the BMC web interface (User Management → Edit User).

For managing multiple servers, create a bash script:

#!/bin/bash
# sol_connect.sh - Bulk SOL connection tool

BMC_IPS=("192.168.100.100" "192.168.100.101" "192.168.100.102")
USER="ADMIN"
PASS="password"

for ip in "${BMC_IPS[@]}"; do
  echo "Connecting to $ip..."
  sshpass -p "$PASS" ssh -t $USER@$ip \
    "/usr/bin/ipmitool -I lanplus -H $ip -U $USER -P $PASS sol activate"
done

On newer BMC firmware (v2.0+), you might need to enable SOL explicitly:

# Check SOL status
ipmitool -I lanplus -H 192.168.100.100 -U ADMIN -P password sol info

# Enable if disabled
ipmitool -I lanplus -H 192.168.100.100 -U ADMIN -P password sol set enabled true

Many Supermicro server administrators encounter the same puzzling scenario: official documentation mentions SSH-based SOL access, but the actual SSH session reveals only a limited BusyBox shell. Here's what's happening under the hood.

Supermicro BMCs typically run two separate environments:

1. The restricted BusyBox shell (what you see via SSH)
2. The SMASH/CLP interface (where SOL actually lives)

Instead of regular SSH, you need to use the dedicated SMASH/CLP protocol. Here's how to establish an SOL session:

ssh -l ADMIN -p 22 [BMC_IP] -t 'start /system1/sol1'
# After authenticating, press Enter twice to activate the console

If the direct method fails, try these workarounds:

# Option 1: Use screen with raw socket
screen /dev/ttyS1 115200

# Option 2: Use ipmitool (requires IPMI enabled)
ipmitool -I lanplus -H [BMC_IP] -U ADMIN -P [password] sol activate

When SOL fails to initialize, check these BMC settings:

# Verify SOL is enabled (should return 'active')
ipmitool raw 0x0c 0x01 0x08 0x03

# Check serial port configuration
ipmitool sol set non-volatile-bit-rate 115.2
ipmitool sol set volatile-bit-rate 115.2

For managing multiple servers, consider this Python snippet using paramiko:

import paramiko

def connect_sol(bmc_ip, user, password):
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(bmc_ip, username=user, password=password)
    transport = client.get_transport()
    channel = transport.open_session()
    channel.exec_command('start /system1/sol1')
    return channel

To confirm SOL is properly configured:

  1. Check BIOS serial console settings match BMC configuration
  2. Verify network connectivity to BMC port 623 (IPMI)
  3. Test with a null-modem cable for local serial access