OpenWRT and Supermicro

Revision as of 15:32, 14 August 2023 by Root (talk | contribs)

Wow! Here's one for the record books that took a bit of research for such a simple solution.

For anyone that is installing OpenWRT on a Supermicro (or any other x86_64) platform,

So, to bury the lede, in /boot/grub/grub.cfg (yup, OpenWRT uses "Legacy" Grub, so all of the GRUB2 information out there has to be translated over to "Legacy" Grub);

  • "Stock" / Original OpenWRT command: linux /boot/vmlinuz root=PARTUUID=d2e27698-02 rootfstype=squashfs rootwait console=ttyS0,115200n8 console=tty0 noinitrd
  • Updated command (just add nomodeset to the end of the line): linux /boot/vmlinuz root=PARTUUID=d2e27698-02 rootfstype=squashfs rootwait console=ttyS0,115200n8 console=tty0 noinitrd nomodeset

(from: https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt )

...and that's it.

So what was the original issue? Well, when a monitor was plugged into the VGA Port, basically the system would boot up, display all of the BMC / IPMI stuff, and then display the beginning of the OpenWRT booting output (IE, the first couple of seconds), then a blank screen. It was noticed that if after the screen blanked the VGA cable was unplugged and an HDMI cable was plugged in, it would display the rest of the OpenWRT boot sequence. But sadly the iKVM video display was broken.

A 'fallback' if the incorrect Video Mode is configured that results in a blank or black screen. This can happen if Primary Display is set to IGD (BIOS Setup / Settings: Advanced, Chipset Configuration, North Bridge, Intel IGD Configuration, Primary Display (Auto, IGD, PCIE));

  • Set JPG1 Jumper to Disable VGA (this only disables the VGA Port), plut in an HDMI Cable / Monitor and everything will be displayed, allowing access to the BIOS.

...and it goes without saying to upgrade to the latest BIOS, IPMI, etc. Firmware

Notes;

It's still kind of up in the air, but... Supermicro seems to designate the Integrated Graphics Device (IGD) as the VGA Port, not the HDMI Port (Display Port is unknown). Why? Because setting the JPG1 Jumper for VGA Enable/Disable to Disable (Pins 1-2 are Enable, Pins 2-3 are Disable) results in the VGA Port not working but the HDMI Port DOES work. The BIOS is an interesting thing. If Primary Display is set to IGD (BIOS Setup / Settings: Advanced, Chipset Configuration, North Bridge, Intel IGD Configuration, Primary Display (Auto, IGD, PCIE)), one might expect output to go to the VGA port. Nope, it isn't. Lesson, do NOT conflate IGD and VGA as they are not equivalent. The hint was in the block diagram of the motherboard and involves the ASPEED IPMI / BMC AST2400 Chip. The diagram shows VGA connected to the ASPEED BMC AST 2400 chip, which in turn is shown connected to the CPU via a PCIe lane. Get it? VGA is at the end of a PCIe lane, so setting the video in the BIOS to PCIe outputs to the VGA and Display Port. Of course this begs the question about where the heck is the connector for the IGD. Apparently there isn't one, which may be involved with the implementation of the ASPEED chip OR it could be the Display Port as that wasn't tested. Although the block diagram seems to indicated that the HDMI and DP connector are equivalently connected.


Video can be set with;

video=1280x1024 (nope, this don't work)* OR vga=795 (from https://en.wikipedia.org/wiki/VESA_BIOS_Extensions#Linux_video_mode_numbers)

...however, the first part of the boot sequence (first couple of seconds, including "Decompressing Linux") cannot be seen until it reaches the 'change video' part of the boot. IE, the below part;

[    1.486659] simple-framebuffer simple-framebuffer.0: framebuffer at 0x81000000, 0x500000 bytes, mapped to 0xffffc90001000000

[    1.497977] simple-framebuffer simple-framebuffer.0: format=a8r8g8b8, mode=1280x1024x32, linelength=5120

[    1.544395] Console: switching to colour frame buffer device 160x64

[    1.587467] simple-framebuffer simple-framebuffer.0: fb0: simplefb registered!


Good news, it doesn't seem to be possible to adjust resolution after booting using fbset or xrandr because they don't exist as packages in OpenWRT. Makes sense given that most routers don't freakin' have video cards! It looks like some people have compiled custom versions of busybox.

No real need to change the resolution, unless one wants to see the full lines of boot messages during boots. Keep in mind, it's available for review after booting using the DMESG Command. Of course if booting is a problem it might be helpful to see the entire line. An alternative would be to remove the nomodeset parameter from the grub.cfg file.

And the ASPEED's iKVM capability doesn't work across reboots, so need to close that window and open it back up


* This was an answer from ChatGPT when asked: How do I get my supermicro motherboard to display vga output when booting openwrt?