OpenWRT and Supermicro

Wiki.TerraBase.info
Revision as of 15:58, 14 August 2023 by Root (talk | contribs)
Jump to navigation Jump to search

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

Enabling Kernel Modesetting (KMS): To enable KMS, add nomodeset=0 or remove nomodeset if it's already present. KMS allows the kernel to set display modes during boot.


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

Stuff like: video=HDMI-1:d rmmod=i915 in the command line don't work.

Differences in boot;

video=VGA-1:1280x1024 (nope, don't work)

vga=795 does work (sets the same resolution as above)

...JPG1 Enabled;

[    1.830724] Non-volatile memory driver v1.3

[    1.835663] Linux agpgart interface v0.103

[    1.842052] [drm] Memory usable by graphics device = 2048M

[    1.847750] [drm] Replacing VGA console driver

[    1.862012] Console: switching to colour dummy device 80x25

[    1.868432] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).

[    1.868438] [drm] Driver supports precise vblank timestamp query.

[    1.891463] [drm] Initialized i915 1.6.0 20170818 for 0000:00:02.0 on minor 0

[    1.899211] [drm] HDaudio controller not detected, using LPE audio instead

[    1.899211]

[    1.915025] loop: module loaded

[    1.918457] Guest personality initialized and is inactive

[    1.924095] VMCI host device registered (name=vmci, major=10, minor=63)

[    1.930796] Initialized host personality

[    1.935699] VMware PVSCSI driver - version 1.0.7.0-k

...JPG1 Disabled;

[    1.999013] Non-volatile memory driver v1.3

[    2.003980] Linux agpgart interface v0.103

[    2.012403] [drm] Memory usable by graphics device = 2048M

[    2.018099] [drm] Replacing VGA console driver

[    2.032397] Console: switching to colour dummy device 80x25

[    2.038920] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).

[    2.038927] [drm] Driver supports precise vblank timestamp query.

[    2.060952] [drm] Initialized i915 1.6.0 20170818 for 0000:00:02.0 on minor 0

[    2.068660] [drm] HDaudio controller not detected, using LPE audio instead

[    2.068660]

[    2.084438] loop: module loaded

[    2.087882] Guest personality initialized and is inactive

[    2.093496] VMCI host device registered (name=vmci, major=10, minor=63)

[    2.100201] Initialized host personality

[    2.105116] VMware PVSCSI driver - version 1.0.7.0-k

...JPG1 Enabled with nomodeset paramter set in grub.cfg vmlinuz line

[    1.714978] Linux agpgart interface v0.103

[    1.726847] loop: module loaded

[    1.730427] Guest personality initialized and is inactive

[    1.736124] VMCI host device registered (name=vmci, major=10, minor=63)

[    1.742948] Initialized host personality

[    1.747960] VMware PVSCSI driver - version 1.0.7.0-k

...and according to: https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt, it does;

nomodeset Disable kernel modesetting. Most systems' firmware

sets up a display mode and provides framebuffer memory

for output. With nomodeset, DRM and fbdev drivers will

not load if they could possibly displace the pre-

initialized output. Only the system framebuffer will

be available for use. The respective drivers will not

perform display-mode changes or accelerated rendering.

Useful as error fallback, or for testing and debugging.

DRM = Direct Rendering Manager

FBDEV = Linux Frame Buffer ( https://en.wikipedia.org/wiki/Linux_framebuffer )