Group: Hardware/Computers/Laptops/Freeable laptops/Hercules eCAFE

From LibrePlanet
Jump to: navigation, search
(Booting: add instruction for flashing the bootloader on the (micro)SD, fixed typo with microSD instead of SD)
(start reorganizing and add example syslinux.cfg)
Line 40: Line 40:
  
 
== Booting ==
 
== Booting ==
 +
To boot you need:
 +
* To install a bootloader on a microSD, the internal eMMC, or to load it through USB
 +
* To install Parabola (or another FSDG distribution) on a (micro)SD card.
 +
 +
=== hardware information ==
 
* The SD slot that is used during boot is located on the side of the laptop.
 
* The SD slot that is used during boot is located on the side of the laptop.
 
* The switch to boot on the SD changes the bootorder and makes the bootrom loads the bootloader from the SD slot that is on the side. This has been verified by looking at the serial port logs. It's also documented in the recovery manual.
 
* The switch to boot on the SD changes the bootorder and makes the bootrom loads the bootloader from the SD slot that is on the side. This has been verified by looking at the serial port logs. It's also documented in the recovery manual.
* There are some recovery images that can probably be obtained through archive.org (TODO: add a link to them)
 
** The boot arguments of the recovery images can easily be altered with vbindiff by looking for ttymxc and altering the default built-in u-boot environement
 
** TODO: Find a way to alter the variable environment instead (the built-in environment has a limited size)
 
  
 +
=== Adding a parabola rootfs to an SD card ==
 
To boot with Parabola on a SD (or microSD with a microSD<->SD adapter):
 
To boot with Parabola on a SD (or microSD with a microSD<->SD adapter):
 
* Install Parabola on a SD/microSD with only one ext4 partition
 
* Install Parabola on a SD/microSD with only one ext4 partition
Line 51: Line 54:
 
* Build a dirty fork of u-boot for this devices from https://framagit.org/GNUtoo/u-boot/-/tree/gnutoo/hercules-ecafe/u-boot-v2019.01-dirty
 
* Build a dirty fork of u-boot for this devices from https://framagit.org/GNUtoo/u-boot/-/tree/gnutoo/hercules-ecafe/u-boot-v2019.01-dirty
  
 +
=== Loading u-boot from USB ===
 
To boot u-boot from USB:
 
To boot u-boot from USB:
 
* Make sure that the switch is set to boot on the external SD and that there are no bootloaders on the microSD/SD
 
* Make sure that the switch is set to boot on the external SD and that there are no bootloaders on the microSD/SD
Line 58: Line 62:
 
* run sudo imx_usb ./u-boot.imx
 
* run sudo imx_usb ./u-boot.imx
  
 +
=== Adding u-boot to an SD card ===
 
To boot u-boot from the microSD/SD
 
To boot u-boot from the microSD/SD
 
* Install u-boot on the microSD/SD:
 
* Install u-boot on the microSD/SD:
Line 72: Line 77:
  
 
As for the extlinux.conf, beside adding console=ttymxc0,115200 the rest is pretty much standard and the documentation about it can be found in the Parabola ARM installation instructions on the Parabola wiki.
 
As for the extlinux.conf, beside adding console=ttymxc0,115200 the rest is pretty much standard and the documentation about it can be found in the Parabola ARM installation instructions on the Parabola wiki.
 +
menu title Welcome to U-Boot with Extlinux support!
 +
 +
timeout 1
 +
 +
label Parabola GNU/Linux-libre, linux-libre kernel
 +
kernel /boot/vmlinuz-linux-libre
 +
append rootwait loglevel=8 rw console=ttymxc0,115200 root=/dev/disk/by-uuid/abcdef01-abcd-abcd-abcd-abcdef123456
 +
fdtdir /boot/dtbs/linux-libre
 +
initrd /boot/initramfs-linux-libre.img
  
 
At boot the display will be black most of the time, so if you don't have an UART soldered it will not be very fun to debug.
 
At boot the display will be black most of the time, so if you don't have an UART soldered it will not be very fun to debug.

Revision as of 21:29, 5 October 2020

Introduction

Hercules made the following laptops with an I.MX51 ARM system on a chip:

  • eCAFE EX HD
  • eCAFE slim HD

Here are some more information on the hardware:

  • 512M of RAM which is soldered. It's also probably the maximum ammount of RAM supported by the I.MX51.
  • There is an USB OTG port
  • The device is capable of booting from an SD card
  • The device has a glossy display (glossy displays are dangerous for the health)
  • The eCAFE EX HD has an HDMI port, which enables to use an external display that is not glossy.

They ship with u-boot, and more recent u-boot versions have been maintained by the free software and open source communities. There is also a device tree available but it needs to be upstreamed in Linux.

Once that will be upstreamed, it will be possible to use them with only free software, with u-boot and Parabola, but it will still have some serious flaws as important features like the 3D acceleration and accelerated video decoding will still be missing.

Source code

Some patches for Linux (including the dts) and u-boot did exist as part of meta-teapot.

Hardware documentation

UART

There is an unpopulated connector for the serial port with UART1 being written under it.

There is an arrow on the left of the connector. Here's the pinout.

> [?][TX?][][][RX][GND][GND][GND]

The MAX3232 that is nearby most probably provides the 5V voltage compatible with common USB serial port adapters.

Status:

  • RX works (115200 8N1 at boot => We can see u-boot logs)
  • TX unknown

JTAG

There is an unpopulated connector with "JTAG" being written on it. I didn't test it.

Booting

To boot you need:

  • To install a bootloader on a microSD, the internal eMMC, or to load it through USB
  • To install Parabola (or another FSDG distribution) on a (micro)SD card.

= hardware information

  • The SD slot that is used during boot is located on the side of the laptop.
  • The switch to boot on the SD changes the bootorder and makes the bootrom loads the bootloader from the SD slot that is on the side. This has been verified by looking at the serial port logs. It's also documented in the recovery manual.

= Adding a parabola rootfs to an SD card

To boot with Parabola on a SD (or microSD with a microSD<->SD adapter):

Loading u-boot from USB

To boot u-boot from USB:

  • Make sure that the switch is set to boot on the external SD and that there are no bootloaders on the microSD/SD
  • Open the screen (it can't boot otherwise)
  • plug the power
  • Start pressing the power button
  • run sudo imx_usb ./u-boot.imx

Adding u-boot to an SD card

To boot u-boot from the microSD/SD

  • Install u-boot on the microSD/SD:
dd if=u-boot.imx of=/dev/sdc bs=512 seek=2 conv=fsync
  • Make sure that the switch is set to boot on the external SD slot
  • Open the screen (it can't boot otherwise)
  • plug the power

Then u-boot will boot on the SD/microsd. It will look for the following files:

  • /boot/extlinux/extlinux.conf which must contains an extlinux configuration file
  • /boot/dtbs/linux-libre/mx5-mx51_na04.dtb which must contain the dtb (the location needs to be fixed to be /boot/dtbs/linux-libre/mx51_na04.dtb instead).

To compile mx5-mx51_na04.dtb you can use the following repository: https://framagit.org/GNUtoo/dts/-/tree/hercules-ecafe/v5.1-dts-raw

As for the extlinux.conf, beside adding console=ttymxc0,115200 the rest is pretty much standard and the documentation about it can be found in the Parabola ARM installation instructions on the Parabola wiki.

menu title Welcome to U-Boot with Extlinux support!

timeout 1
label Parabola GNU/Linux-libre, linux-libre kernel
	kernel /boot/vmlinuz-linux-libre
	append rootwait loglevel=8 rw console=ttymxc0,115200 root=/dev/disk/by-uuid/abcdef01-abcd-abcd-abcd-abcdef123456
	fdtdir /boot/dtbs/linux-libre
	initrd /boot/initramfs-linux-libre.img

At boot the display will be black most of the time, so if you don't have an UART soldered it will not be very fun to debug.

See also the boot log for details on the kernel version and for understanding what works or doesn't work.

Status:

  • Ethernet works
  • HDMI doesn't work
  • Keyboard, touchpad, display work, eMMC, USB host work
  • Sound, usb otg, webcam untested
  • WiFi don't work with free software due to nonfree firmware lacking a free firmware replacement

TODO

  • Find a proper header for the Serial connector I soldered a cable instead. The cable went through the microSD slot that is on the bottom of the laptop.
  • Find a way to change the u-boot environement
  • Boot Parabola:
  • Upstream the Linux dts
  • Upstream u-boot support (and make use of the Linux dts for that)
  • Add support for that device in Parabola by also packaging u-boot for that device.