Post Reply 
 
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
serial console output - characters printed twice
2015-09-10, 10:33 (This post was last modified: 2015-09-10 10:36 by lupowolfi.)
Post: #1
serial console output - characters printed twice
Hi,

I'm iPXE-booting on an Alix APU1D system board (not using the onboard iPXE image, but a compiled image from a recent version from git, 07.09.2015).

With this setup, the serial console output seems to have a minor issue, namely each character is printed twice.

Apart from this the output is working.

The following image illustrates the problem:

[Image: ttvRJ8W.jpg]

regards,
lupowolfi
Find all posts by this user
Quote this message in a reply
2015-09-10, 10:44
Post: #2
RE: serial console output - characters printed twice
(2015-09-10 10:33)lupowolfi Wrote:  With this setup, the serial console output seems to have a minor issue, namely each character is printed twice.

You have enabled both iPXE's own serial console support (CONSOLE_SERIAL in config/console.h) and also your BIOS's serial console redirection.

Michael
Visit this user's website Find all posts by this user
Quote this message in a reply
2015-09-10, 11:11
Post: #3
RE: serial console output - characters printed twice
(2015-09-10 10:44)mcb30 Wrote:  
(2015-09-10 10:33)lupowolfi Wrote:  With this setup, the serial console output seems to have a minor issue, namely each character is printed twice.

You have enabled both iPXE's own serial console support (CONSOLE_SERIAL in config/console.h) and also your BIOS's serial console redirection.

Michael

You were right, that was the "problem". Thank you for your fast help!

I did not realize that the PCBIOS console was enabled, because the option was commented out in config/console.h.
Undefining CONSOLE_PCBIOS in config/console.h solved my problem.
Find all posts by this user
Quote this message in a reply
2015-09-10, 12:54
Post: #4
RE: serial console output - characters printed twice
(2015-09-10 11:11)lupowolfi Wrote:  You were right, that was the "problem". Thank you for your fast help!

I did not realize that the PCBIOS console was enabled, because the option was commented out in config/console.h.
Undefining CONSOLE_PCBIOS in config/console.h solved my problem.

Sorry, I didn't explain myself clearly enough.

CONSOLE_PCBIOS is the "normal" console which writes to the screen and reads from the keyboard.

CONSOLE_SERIAL is iPXE's own serial port driver.

BIOS serial redirection is a feature implemented by your BIOS (and configurable via your BIOS setup screen) in which characters written to the screen will also be sent to the serial port.

The problem is that you have both CONSOLE_SERIAL and BIOS serial redirection enabled. iPXE writes each character both to the screen (due to CONSOLE_PCBIOS) and to the serial port (due to CONSOLE_SERIAL). Your BIOS then writes an additional copy of the character to the serial port, since you have BIOS serial redirection enabled. You therefore end up with two copies of each character on the serial port: one written directly by iPXE, one written by your BIOS.

The solution is to either disable CONSOLE_SERIAL or to disable your BIOS serial redirection (via your BIOS setup screen). Do not disable CONSOLE_BIOS unless you really don't want to be able to interact via a local keyboard and monitor.

You may find that iPXE's CONSOLE_SERIAL is more robust than your BIOS's serial redirection feature, and so it might be preferable to leave CONSOLE_SERIAL enabled and disable the BIOS serial redirection (via your BIOS setup screen).

Michael
Visit this user's website Find all posts by this user
Quote this message in a reply
2015-09-11, 08:33
Post: #5
RE: serial console output - characters printed twice
(2015-09-10 12:54)mcb30 Wrote:  Sorry, I didn't explain myself clearly enough.

CONSOLE_PCBIOS is the "normal" console which writes to the screen and reads from the keyboard.

CONSOLE_SERIAL is iPXE's own serial port driver.

BIOS serial redirection is a feature implemented by your BIOS (and configurable via your BIOS setup screen) in which characters written to the screen will also be sent to the serial port.

The problem is that you have both CONSOLE_SERIAL and BIOS serial redirection enabled. iPXE writes each character both to the screen (due to CONSOLE_PCBIOS) and to the serial port (due to CONSOLE_SERIAL). Your BIOS then writes an additional copy of the character to the serial port, since you have BIOS serial redirection enabled. You therefore end up with two copies of each character on the serial port: one written directly by iPXE, one written by your BIOS.

The solution is to either disable CONSOLE_SERIAL or to disable your BIOS serial redirection (via your BIOS setup screen). Do not disable CONSOLE_BIOS unless you really don't want to be able to interact via a local keyboard and monitor.

You may find that iPXE's CONSOLE_SERIAL is more robust than your BIOS's serial redirection feature, and so it might be preferable to leave CONSOLE_SERIAL enabled and disable the BIOS serial redirection (via your BIOS setup screen).

Michael

OK, now I got it. Thanks for the explanation.

At least in the case of this alix board the serial driver of iPXE is indeed the preferable variant (haven't tried other serial devices yet), as the menu isn't displayed properly using the BIOS's redirection feature.

Unfortunately these devices are shipped with a very limited BIOS, in fact only the boot settings can be altered.

Nevertheless, I found a solution I'm happy with. I modified the file config/defaults/pcbios.h by changing the line defining the CONSOLE_PCBIOS option to:
#define CONSOLE_PCBIOS ( CONSOLE_USAGE_ALL & ~CONSOLE_USAGE_TUI )

This way at least the menu is printed only once in my serial setup and the iPXE output seems also to be fine in normal cases (non serial).
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 2 Guest(s)