FreeBSD UEFI Serial Console & Supermicro IPMI SOL: THE SUCK, THE FSCK, & THE FIX

We had some problems with Prometheus.iX (a Bhyve VM Host Machine at iX in San Jose) booting. Or, rather, not booting as the case may be.

While troubleshooting, since we were (obviously!) on our FreeBSD desktops, and this motherboard did not have the option of the (slightly) more modern HTML5 Canvas iKVM, we tried Console Redirection & SOL. Again. And Again.

Unfortunately, neither option worked for us. Eventually, it was narrowed down to two Evil & Wrong configuration issues:

While it seemed apparent that loader.conf needed to be changed, a few quick attempts were fruitless.

Well, you know what they say:

FreeBSD: Yeah, we really ARE smarter…because…we have to be…because…this SHW@#$ is HARD, SOMETIMES!

However, thanks to some prior sleuthing by mmacy@, I wasn’t trying to figure this out for 3 months! (ASIDE: mmacy is working on some MORE killer work in FreeBSD-land…but that’s a story for another day!)

# Serial Console    
   boot_multicons="YES"
   boot_serial="YES"
   comconsole_speed="115200"
   console="efi,comconsole,vidconsole"
   comconsole_port="0x2F8"
   ipmi_load="YES"
  • Modify SuperMicro BMC IPMI settings via ipmi-tool access to Prometheus.iX from another FreeBSD system:

Do some ipmitool ninja moves…and…
# FAIL!?!?

Let’s Try This AGAIN! cracks knuckles

> ipmitool> sol activate usesolkeepalive  [SOL Session operational. Use ~? for help]  
>
> ��?�����?B�$���?�����?�����?B$���?���~? 
>
> Session Terminated

NOOOOOOOOOOOOOOOOOOOO!

    ipmitool> sol info 
    Set in progress : 
    set-complete Enabled : true 
    Force Encryption : false 
    Force Authentication : false P
    Privilege Level : OPERATOR 
    Character Accumulate Level (ms) : 0 
    Character Send Threshold : 0 
    Retry Count : 0 
    Retry Interval (ms) : 0 
    Volatile Bit Rate (kbps) : 38.4 
    Non-Volatile Bit Rate (kbps) : 9.6 
    Payload Channel: 1 (0x01) 
    Payload Port : 623

AHA! WTF!? THIS AINT RIGHT! AMIRITE!?

YOU WILL RESPECT MY AUTHORITAY!

>     ipmitool> sol set volatile-bit-rate 115.2 1
>     ipmitool> sol set non-volatile-bit-rate 115.2 1 i
>     pmitool> sol set character-accumulate-level 150 
>     ipmitool> sol set character-send-threshold 200 
>     ipmitool> sol set retry-count 7 
>     ipmitool> sol set retry-interval 9
>     ipmitool> sol set character-accumulate-level 30 
>     ipmitool> sol info 
>     Set in progress : 
>     set-complete Enabled : true 
>     Force Encryption : false 
>     Force Authentication : false 
>     Privilege Level : OPERATOR 
>     Character Accumulate Level (ms) : 150 
>     Character Send Threshold : 200 
>     Retry Count : 7
>     Retry Interval (ms) : 90 
>     Volatile Bit Rate (kbps) : 115.2 
>     Non-Volatile Bit Rate (kbps) : 115.2 
>     Payload Channel : 1 (0x01)
>     Payload Port : 623

THERE WE GO! MUCH BETTER, N’EST PAS? 😉

    ipmitool> sol activate [SOL Session operational. Use ~? for help]

    FreeBSD/amd64 (prometheus.ixsystems.com) (ttyu1)

    login:

Yeah! Who’s yer daddy now! (yes, the silly things nerds get fired-up about.)

Until we meet again…perhaps at mountroot>

-m