Console and outputs: Difference between revisions

From coreboot
Jump to navigation Jump to search
No edit summary
No edit summary
 
(47 intermediate revisions by the same user not shown)
Line 1: Line 1:
Coreboot has various possible consoles:
Coreboot has various possible consoles:
* [[Serial console]]
{| class="wikitable"  border="1"
* [[EHCI Debug Port| Console Over EHCI debug port]]
! Output name
* [[Spkmodem| Console trough spkmodem]]
! direction (from the coreboot target machine point of view)
* [[Network console]]
! Requirements
* [[Cbmem console]]
! Compatibility with software loaded after coreboot, like OS and payloads
Other output:
|-
* [[POST Card]]
! [[Serial console]]
(sends coreboot logs over the serial port)
|
* input
* output
|
* A supported serial port:
** it can be on the mainboard
** it can also be a PCIe OXPCIe952 card with the 0x1415 and 0xc158 vendor and device ID (respectively).
** USB serial ports are not supported by this driver, see EHCI debug port for that.
|
* seabios
* grub as a payload
* grub running after seabios
* libpayload
* linux kernel (loaded after the payload)
* most GNU/Linux init systems(sysvinit, systemd, upstart etc...)
|-
! [[EHCI Debug Port| Console Over EHCI debug port]]
(sends coreboot logs over the usb debug port)
|
* input?
* output
|
* An USB debug port supported by coreboot.
* To find on which usb connector it goes.
* A supported dongle:
** A GNU/Linux computer with usb peripheral or OTG and the g_dbpg driver. Single Board computers typically have that.
|
* grub
* linux kernel in its early initialisation (I'm not sure that it can be kept afterward, because, after the early initialisation, by default it tries to initialise the USB port normally)
 
|-
! [[EHCI Debug Port| Console Over USB serial port through EHCI debug port]]
(sends coreboot logs over the usb debug port)
|
* input (probably not in coreboot)
* output
|
* An USB debug port supported by coreboot.
* To find on which usb connector it goes.
* A supported dongle:
** FTDI FT232H Serial adapter
|
* grub
* linux kernel
|-
! [[Spkmodem| Console trough spkmodem]]
(sends coreboot logs over the sound card)
|
* output only
|
* A working sound card that can emmit beeps boot.
* On some laptops it's necessary to make sure the sound is enabled and the volume is correct to work:
** On many laptops it can be done beforehand in GNU/Linux.
|
For writting to it from the coreboot target computer:
* coreboot's console
* grub's console
For reading it from a remote computer:
* coreboot's/grub's  spkmodem_recv uttilty (same uttility, but it's available in both git repositories)
|-
! [[Network console]]
(sends coreboot logs over the network)
|
* output
* probably no input
|
* A ne2k compatible ethernet card on the coreboot target system.
* A network between the coreboot computer and the computer receiving the logs.
|
For sending the logs:
* the linux kernel
For receiving the logs:
* nc and similar networking uttilities.
|-
! [[Cbmem console]]
(Ram buffer, like dmesg)
|
* output only for coreboot.
* output for grub. Can also print cbmem console content.
* It requires the computer to be booted to retrive the logs.
|
* To be able to boot the computer to retrieve the logs, or to extract them from the RAM.
|
For writting to the buffer which is in the coreboot target computer:
* coreboot console output
* grub console output
* seabios
For reading the buffer on the coreboot target computer, after coreboot booted:
* grub with the cbmemc command
* coreboot's userspace cbmem -c uttility
|-
 
|-
! [[POST card]]
|
* output only.
|
|
|-
|}
 
If none of the above works for your case, you might consider:
* Trying [[Developer_Manual/Tools#Flash_emulators_.28used_to_flash_and_debug.29 | Flash emulators]] to trace the code being accessed.
* [[Developer_Manual/Tools#Oscilloscope| Osciloscopes]] for hardware related lower level debuging.
* [https://www.serialice.com SerialICE] if you can add support for your board serial or [[EHCI Debug Port]] in [https://www.serialice.com SerialICE]

Latest revision as of 17:01, 24 February 2018

Coreboot has various possible consoles:

Output name direction (from the coreboot target machine point of view) Requirements Compatibility with software loaded after coreboot, like OS and payloads
Serial console

(sends coreboot logs over the serial port)

  • input
  • output
  • A supported serial port:
    • it can be on the mainboard
    • it can also be a PCIe OXPCIe952 card with the 0x1415 and 0xc158 vendor and device ID (respectively).
    • USB serial ports are not supported by this driver, see EHCI debug port for that.
  • seabios
  • grub as a payload
  • grub running after seabios
  • libpayload
  • linux kernel (loaded after the payload)
  • most GNU/Linux init systems(sysvinit, systemd, upstart etc...)
Console Over EHCI debug port

(sends coreboot logs over the usb debug port)

  • input?
  • output
  • An USB debug port supported by coreboot.
  • To find on which usb connector it goes.
  • A supported dongle:
    • A GNU/Linux computer with usb peripheral or OTG and the g_dbpg driver. Single Board computers typically have that.
  • grub
  • linux kernel in its early initialisation (I'm not sure that it can be kept afterward, because, after the early initialisation, by default it tries to initialise the USB port normally)
Console Over USB serial port through EHCI debug port

(sends coreboot logs over the usb debug port)

  • input (probably not in coreboot)
  • output
  • An USB debug port supported by coreboot.
  • To find on which usb connector it goes.
  • A supported dongle:
    • FTDI FT232H Serial adapter
  • grub
  • linux kernel
Console trough spkmodem

(sends coreboot logs over the sound card)

  • output only
  • A working sound card that can emmit beeps boot.
  • On some laptops it's necessary to make sure the sound is enabled and the volume is correct to work:
    • On many laptops it can be done beforehand in GNU/Linux.

For writting to it from the coreboot target computer:

  • coreboot's console
  • grub's console

For reading it from a remote computer:

  • coreboot's/grub's spkmodem_recv uttilty (same uttility, but it's available in both git repositories)
Network console

(sends coreboot logs over the network)

  • output
  • probably no input
  • A ne2k compatible ethernet card on the coreboot target system.
  • A network between the coreboot computer and the computer receiving the logs.

For sending the logs:

  • the linux kernel

For receiving the logs:

  • nc and similar networking uttilities.
Cbmem console

(Ram buffer, like dmesg)

  • output only for coreboot.
  • output for grub. Can also print cbmem console content.
  • It requires the computer to be booted to retrive the logs.
  • To be able to boot the computer to retrieve the logs, or to extract them from the RAM.

For writting to the buffer which is in the coreboot target computer:

  • coreboot console output
  • grub console output
  • seabios

For reading the buffer on the coreboot target computer, after coreboot booted:

  • grub with the cbmemc command
  • coreboot's userspace cbmem -c uttility
POST card
  • output only.

If none of the above works for your case, you might consider: