6

How can I setup Serial-Over-Lan (SOL) on FreeBSD with a SuperMicro X9-SCM-F motherboard? There are a few resources out there but they contradict each other, are unclear, and don’t actually allow me to get SOL working past the boot loader.

Andrew Marshall
  • 432
  • 4
  • 13

4 Answers4

10

This was originally tested on FreeBSD 10.0-RELEASE, but will likely work on FreeBSD 9.x, and is known to work up to at least 13.0-RELEASE. Different motherboards may have slightly different configuration, but this may still prove a useful reference.

BIOS Configuration

  • Open the BIOS settings and navigate to “Advanced → Serial Port Console Redirection” and ensure “SOL Console Redirection” is set to “Enabled” (you do not need to enable COM1 or COM2 or Out-of-Band management).

  • Open the “SOL Console Redirection Settings” and configure as follows:

    Terminal Type                        [VT-UTF8]
    Bits per second                      [115200]
    Data Bits                            [8]
    Parity                               [None]
    Stop Bits                            [1]
    Flow Control                         [None]
    VT-UTF8 Combo Key Support            [Enabled]
    Recorder Mode                        [Disabled]
    Resolution 100x31                    [Enabled]
    Legacy OS Redirection Resolution     [80x24]
    Putty KeyPad                         [VT100]
    Redirection After BIOS POST          [Always Enable]
    

You should only have to change “Terminal Type” to VT-UTF8 and “Bits per second” to 115200 to achieve the above configuration. Not changing the Terminal Type resulting in some issues when copy-pasting into the SOL session.

FreeBSD Configuration

  • Boot FreeBSD and add the following lines to /boot/loader.conf:

    console="comconsole vidconsole"
    comconsole_speed=115200
    comconsole_port="0x3E8"
    

0x3E8 is the port for COM3 (“SOL” in the BIOS settings). You can discover the possible values by inspecting dmesg like so:

$ dmesg | grep uart
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
uart0: console (115200,n,8,1)
uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0
uart2: <16550 or compatible> port 0x3e8-0x3ef irq 10 on acpi0

If you wish to be get a login prompt (and thus be able to login) via SOL, edit /etc/ttys changing the following line:

ttyu2   "/usr/libexec/getty std.9600"   dialup  off secure

to

ttyu2   "/usr/libexec/getty std.115200" vt100   on secure

We change ttyu2 because this corresponds to COM3 (since TTYs are zero-indexed and COM is not) which is what our SOL uses. If you don’t need to login (because, for example, you just need to enter a password for GELI during boot), you can leave /etc/ttys as-is.

Notes

Above is the minimum required to get this working. Various people (see “References” below) recommended or stated that they “needed” a slew of other settings which, for me, were not needed but did not impair SOL functionality either. Again, the following should not be needed, and is included for reference only.

  • In /boot/loader.conf:

    boot_multicons="yes"
    boot_serial="yes"
    hint.uart.0.flags="0x00"
    hint.uart.2.at="isa"
    hint.uart.2.flags="0x10"
    hint.uart.2.irq="10"
    hint.uart.2.port="0x3E8"
    
  • In /boot.config:

    -P
    

    or

    -Dh
    

Despite what the FreeBSD handbook seems to say, you should not need to compile a custom kernel.

References

Please note that many of these are wrong, out-of-date, or overzealous in setting options not actually needed. Despite that, they were helpful in arriving at the final implementation described above.

Andrew Marshall
  • 432
  • 4
  • 13
  • 1
    Very useful info - thanks. On Supermicro X10 motherboard series, the SOL port is COM2, (0x2F8). Perhaps someone finds it useful. – Marcin Kaminski Apr 20 '15 at 21:04
3

Not enough rep to comment on the answer above, so:

I run FreeBSD 9.2 and Andrew's configuration above enables SOL on COM 3 for me on X8SIL-F / X8SIE-F, from BIOS to login prompt. It is completely based on his above answer but tested on 9.2 with GENERIC kernel--thank you, Andrew!

A few notes:

  • It seems to be the order of 'comconsole' or 'vidconsole' in the line "console=..." in /boot/loader.conf, that determines which becomes the boot console proper, and thus where the console messages (and single user prompt) appears. I could not get /boot.config to influence that, neither probing for keyboard, -P, or double console, -D, see boot(8), had any effect--so I do not have a /boot.config.

  • The X8SIL's BIOS settings for COM3 were spot on. I only changed the terminal type to VT-UTF8 as suggested, even though ANSI and VT100 works, too--I tested them.

  • It was not necessary for me to set the irq for uart2 in /boot/loader.conf. For the flags, see uart(8).

  • In /dev/ttys, I set ttyu2 to 'insecure', because I don't want root to login over SOL (single user mode will still get you root). I suggest to set the console insecure as well.

dubberx
  • 31
  • 2
0

Not enough rep to comment, but this saved my day.

I did however need to add these to /boot/device.hints as without it, FreeBSD does not see the uart2 device for the SOL console. I have a Supermicro X9SRi-3F, and the SOL console runs on COM3. There is no way to change this, even if you disable the other two onboard serial ports.

I had to add these to fully unlock serial console support on FreeBSD 12.2

hint.uart.2.at="isa"
hint.uart.2.port="0x3E8"
hint.uart.2.flags="0x10"
0

If someone's still unable to get the SOL output - reset the BMC, this might be the case.

drookie
  • 8,625
  • 1
  • 19
  • 29