Hello,
I am trying vanilla coreboot/SeaBios on an pc-engines apu1d4 : http://www.pcengines.ch/apu1d4.htm
The board natively use a modified version of coreboot, the sources are available at http://www.pcengines.ch/howto.php#CoreBoot (coreboot_14090 8.tar.gz)
I use a usb-SR232 adapter to connect on the board. I use minicom and picocom. Both are working fine.
BUT
When I use coreboot vanilla (master) with SeaBios vanilla (master, I also tried 1.7.5), when I get to "Press ESC for boot menu" I can't send keystroke to SeaBios through the serial console. I have to plug an USB keyboard and press ESC on it.
I tried scancode (F10, F12, Q (0x10)) same problem. I disabled hardware and software flow control on minicom.
In fact, SeaBios doesn't get ANY keystroke from the serial port. I can press any keyboard key in minicom/picocom the message "Press ESC for boot menu." stay until timeout (DEFAULT_BOOTMENU_WAIT) (I set etc/boot-menu-wait to 90000 to verify that… so I am pretty sure of it).
Furthermore, after I enter the boot menu via usb keyboard I can't choose anything from the menu through minicom/picocom. I have to use an USB keyboard.
When I get in the OS (tinycore Linux), minicom/picocom input works.
I don't have the problem with the modified coreboot/SeaBios from PC -Engines.
At first I thought it's a SeaBios problem but the keystroke code part (src/boot.c) are the same in vanilla SeaBios and PC-Engines SeaBios.
PC-Engines sources don't have .config files (nor for coreboot neither for SeaBios) but have build/config.h and out/autoconf.h. I tried to look for some interesting difference between vanilla and PC -Engines sources for those file but my coreboot/SeaBios knowledge weren't enough to spot anything.
Can anyone help me ?
Since I don't know if the problem relies on coreboot or SeaBios I post this on both mailing-list.
I attached to this mail : * my .config coreboot file * my build/config.h coreboot file * my payloads/external/SeaBIOS/seabios/out/autoconf.h SeaBios file * PC-Engines build/config.h * PC-Engines SeaBios autoconf.h
On Thu, Aug 13, 2015 at 03:47:26PM +0200, Maxime de Roucy wrote:
Hello,
I am trying vanilla coreboot/SeaBios on an pc-engines apu1d4 : http://www.pcengines.ch/apu1d4.htm
The board natively use a modified version of coreboot, the sources are available at http://www.pcengines.ch/howto.php#CoreBoot (coreboot_14090 8.tar.gz)
I use a usb-SR232 adapter to connect on the board. I use minicom and picocom. Both are working fine.
BUT
When I use coreboot vanilla (master) with SeaBios vanilla (master, I also tried 1.7.5), when I get to "Press ESC for boot menu" I can't send keystroke to SeaBios through the serial console. I have to plug an USB keyboard and press ESC on it.
Mainline seabios does not directly support keyboard over serial. To get that functionality, one uses sgabios with seabios - see the description at:
http://www.coreboot.org/SeaBIOS#Adding_sgabios_support
-Kevin
On to, 2015-08-13 at 15:47 +0200, Maxime de Roucy wrote:
Hello,
I am trying vanilla coreboot/SeaBios on an pc-engines apu1d4 : http://www.pcengines.ch/apu1d4.htm
The board natively use a modified version of coreboot, the sources are available at http://www.pcengines.ch/howto.php#CoreBoot (coreboot_14090 8.tar.gz)
I use a usb-SR232 adapter to connect on the board. I use minicom and picocom. Both are working fine.
BUT
When I use coreboot vanilla (master) with SeaBios vanilla (master, I also tried 1.7.5), when I get to "Press ESC for boot menu" I can't send keystroke to SeaBios through the serial console. I have to plug an USB keyboard and press ESC on it.
Look for uart_check_keystrokes() under seabios tree of the tarball you referenced. You are asking for an extended capability Sage has added to 'SageBIOS' and this feature is not available in upstream SeaBIOS tree. Should be fairly straighforward to upstream that, as it appears to be all the conditional code under CONFIG_INT16_SERIAL_KEYBOARD.
SageBIOS payload extracted from original apu1 firmware might work with keyboard interaction on serial, I don't remember if I ever tried it. Do it this way, and you lack any SeaBIOS updates from last 18 or so months.
Unfortunately many changes Sage has developed for SageBIOS have never been offered upstream SeaBIOS as patches at all, and the available tarballs of released SageBIOS tree seem to be missing half the toolchain (Makefiles, Kconfigs) to "kindly direct" you to use Sage EDK eclipse environment.
The feature to use frontpanel switch on apu1d to reset SageBIOS bootorder file has not been upstreamed either. In addition to the SeaBIOS change, this introduced and exposed new CBMEM table entries from coreboot proper to payloads in a way that might not pass coreboot QA and review. I quess I could try what the response is.
Kyösti
Le jeudi 20 août 2015 à 14:54 +0300, Kyösti Mälkki a écrit :
Look for uart_check_keystrokes() under seabios tree of the tarball you referenced. You are asking for an extended capability Sage has added to 'SageBIOS' and this feature is not available in upstream SeaBIOS tree. Should be fairly straighforward to upstream that, as it appears to be all the conditional code under CONFIG_INT16_SERIAL_KEYBOARD.
Hello,
Thanks for your reply. Currently I use sgabios as advised by Kevin O'Connor but it would be great if SeaBIOS could deal with keyboard over serial as a builtin feature.
MAYBE I will try to include the uart_check_keystrockes myself in the seabios code as you said it's the main fonction for that feature. But I don't know anything about that kind of environment (serial, very low level programming…).
But I just brick my apu1d4 trying to understand why I can't see anything on the console when I run my memtest86+ build. So I will not be able to test anything before I received the lpc1aapu I just order to unbrick the board.
By the way if you want to test some coreboot/seabios build/feature on my apu1d4 it will be with pleasure. As I will soon have a way to unbrick it if things goes wrong.
SageBIOS payload extracted from original apu1 firmware might work with keyboard interaction on serial, I don't remember if I ever tried it. Do it this way, and you lack any SeaBIOS updates from last 18 or so months.
It's not very clear for me… Do you mean Seabios have to be able to handle serial "keyboard input" for the payload it run to be able to handle it itself ? (I really doubt about the english rightness of this sentence)
What I mean is : In order for memtest86+ to be able to handle serial input/output does Seabios have to be able to handle it too ? If that's the case, does sgabios is a sufficient/working workaround ?
That leads me to another question : If I disable serial debug output in Seabios and add sgabios to deal with the serial input/output. Does sgabios will also handle serial input/output for all the payload Seabios will launch ? So, should I enable or disable the serial support on memtest86+, coreinfo, nvramcui and all the other payload I want to add in the rom ?