rEFInd can probably work with any serial console device with some setup but there needs to be a UEFI driver for the serial device. There are UEFI serial drivers for PCI serial devices. https://github.com/acidanthera/bugtracker/issues/1954#issuecomment-1042871406
I haven't tried the rEFInd text menu with serial console but I don't see why it couln't work.
If your firmware doesn't have the UEFI USB driver, then you need to build it. On a Mac I would use an existing edk2 build environment such as one setup for building OpenCore, Clover, rEFIndPlus, or rEFInd. You would have to learn about building stuff in edk2 and what commands would best build just the bits you want. I have a small set of UEFI projects at https://github.com/joevt/joevtApps
Then you have to load the driver somehow. rEFInd can load drivers but it might not be early enough. This will require some testing and investigation. I suppose one rEFInd could load it, then chain boot another rEFInd to use it but I don't know how the console would get changed inbetween. It could be automatic - if the driver the ConOut device points to doesn't exist then maybe it goes to the display. Then when the driver gets loaded, the next app will have console output go to ConOut. I don't know. All my testing is described in the link I posted in my previous reply. I suppose it would be simpler for rEFInd to contain code to switch the console according to a setting in the refind.conf file - bypassing the nvram settings. This would be a modification of the textonly and textmode settings.
On my Mac Pro 2008, I can load a EFI driver from disk using the Driver#### and DriverOrder nvram variables described in the EFI and UEFI specs. Maybe the driver can be added to firmware using something like UEFITool to edit a firmware dump but I wouldn't do that until after testing the driver via other methods.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, does rEFInd have any support for USB Serial adaptors such as the FTDI or PL2303 modules?
I'm building an Arduino based boot selector and serial looks like the best option.
rEFInd can probably work with any serial console device with some setup but there needs to be a UEFI driver for the serial device. There are UEFI serial drivers for PCI serial devices.
https://github.com/acidanthera/bugtracker/issues/1954#issuecomment-1042871406
I haven't tried the rEFInd text menu with serial console but I don't see why it couln't work.
I don't know if there are any UEFI serial drivers for USB serial devices. Actually, I found this one which might work (but I haven't looked at it):
https://github.com/tianocore/edk2-platforms/tree/master/Drivers/OptionRomPkg/Bus/Usb/FtdiUsbSerialDxe
Hi @srs5694
Is this something an end user can impliment or does this requre a core dev to impliment?
I appreciate that it's a rather niche scenario but it would be super useful situations where there is no screen but a need to multi-boot.
If your firmware doesn't have the UEFI USB driver, then you need to build it. On a Mac I would use an existing edk2 build environment such as one setup for building OpenCore, Clover, rEFIndPlus, or rEFInd. You would have to learn about building stuff in edk2 and what commands would best build just the bits you want. I have a small set of UEFI projects at https://github.com/joevt/joevtApps
Then you have to load the driver somehow. rEFInd can load drivers but it might not be early enough. This will require some testing and investigation. I suppose one rEFInd could load it, then chain boot another rEFInd to use it but I don't know how the console would get changed inbetween. It could be automatic - if the driver the ConOut device points to doesn't exist then maybe it goes to the display. Then when the driver gets loaded, the next app will have console output go to ConOut. I don't know. All my testing is described in the link I posted in my previous reply. I suppose it would be simpler for rEFInd to contain code to switch the console according to a setting in the refind.conf file - bypassing the nvram settings. This would be a modification of the textonly and textmode settings.
On my Mac Pro 2008, I can load a EFI driver from disk using the Driver#### and DriverOrder nvram variables described in the EFI and UEFI specs. Maybe the driver can be added to firmware using something like UEFITool to edit a firmware dump but I wouldn't do that until after testing the driver via other methods.
Thank you so much for the detailed answer - you really went above and beyond.