Differences between revisions 12 and 88 (spanning 76 versions)
Revision 12 as of 2018-04-07 09:36:12
Size: 10543
Editor: ?HaraldGeyer
Comment: add information about boot script
Revision 88 as of 2022-06-09 10:07:43
Size: 17731
Comment: keyboard is again broken in u-boot
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:
<<TableOfContents()>>
Line 16: Line 18:
The Teres-I is a DIY open hardware laptop sold by Olimex. Olimex has stated that they intend the Teres-I to be very modular, allowing main boards built around different !SoCs interchangeably. However the only main board available at the moment is based on the Allwinner A64 SoC with 2GB RAM and 16GB eMMC internal storage. The CPU is supported by the arm64 architecture in debian. armhf should work too, but is untested.

The laptop is sold with linux (ubuntu + vendor supplied kernel) preinstalled. There is not full source code available for the vendor kernel, which means that users of the preinstalled system are permanently stuck with an old version of linux. On the other hand since a linux system is available no external computer and no cross-compilation is required to bootstrap a debian system.

While debian should run fine from the eMMC internal storage, most people install debian to an external microSD card (there is one slot available) to have both systems available. That's also what is described in this guide. (This guide is still work in progress.)
The Teres-I is a DIY open hardware laptop sold by Olimex.
Olimex has stated that they intend the Teres-I to be very modular,
allowing main boards built around different !SoCs to be used interchangeably.
However, the only main board available at the moment is based on the Allwinner A64 SoC
with 2GB RAM and 16GB eMMC internal storage.
The CPU is supported by the arm64 architecture in debian.
armhf should work too, but is untested.

The laptop is sold with linux (ubuntu + vendor supplied kernel) preinstalled.
Source code is only partially available
for the vendor kernel,
which means that users of the preinstalled system are permanently stuck with an old version of linux.
On the other hand since a linux system is available,
no external computer and no cross-compilation is required to bootstrap a debian system.

While debian runs fine from eMMC internal storage,
it is common to
install debian to an external microSD card (there is one slot available)
to have both systems available.
That's also what is described in this guide.
Line 23: Line 38:
To get an overview of mainline kernel support, see the [[http://linux-sunxi.org/Linux_mainlining_effort#Status_Matrix|status matrix of the linux sunxi community]]. To get an overview of mainline kernel support,
see the [[http://linux-sunxi.org/Linux_mainlining_effort#Status_Matrix|status matrix of the linux sunxi community]].
Line 32: Line 48:
|| CPU Frequency Scaling || {X} || || CPU Frequency Scaling || {OK} ||
Line 34: Line 50:
|| Sleep / Suspend || /!\ - maybe wakeup source is missing? || || Sleep / Suspend || {OK} ||
Line 38: Line 54:
|| Switch to External Screen || {X} || || Switch to External Screen || {X} - only with non-Mainline patches e.g. included in Olimex images ||
Line 42: Line 58:
|| Keyboard's Hotkeys  || [?] ||
~-Legend :<<BR>> {OK} = OK ; {X} Unsupported(No Driver) ; /!\ = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable <<BR>> {i} = Configuration Required;  X-( = Only works with a non-free driver and or firmware-~
|| Keyboard's Hotkeys (a.k.a. media keys) || {OK} - since udev 245 ||
~-Legend :<<BR>>
{OK} = OK ;
{X} Unsupported(No Driver) ;
/!\ = Error (Couldn't get it working);
[?] Unknown, Not Test ;
[-] Not-applicable <<BR>>
{i} = Configuration Required;
X-( = Only works with a non-free driver and or firmware-~
Line 46: Line 69:
The laptop is sold as a kit for self-assembly. Here we assume that it is completely assembled and confirmed working correctly with the preinstalled system.

== The easy way: Using an image ==
There is a ready image available for directly writing to your microSD card. For links, further information and discussion see the [[https://www.olimex.com/forum/index.php?topic=6092.0|dedicated thread at the olimex forum]].

== The manual way: Bootstraping ==
The debian kernel package (starting with 4.16) and arm64 userspace packages work out of the box, but you will need to get or compile yourself a custom device tree file and bootloader.
The laptop is sold as a kit for self-assembly.
Here we assume that the kit is completely assembled
and correctly functioning with the preinstalled system.

== Image install ==

Several images exist for directly writing to your microSD card:

## sorted by distance to debian - e.g. add official installer images at the top
 * [[http://ftp.nl.debian.org/debian/dists/buster/main/installer-arm64/current/images/netboot/SD-card-images|Debian Installer]]
 * [[https://box.redpill.dk/|Redpill]]
  * Source: Debian
  * Build: Boxer + qemu + multistrap + [[https://salsa.debian.org/tinker-team/box/|custom scripts]]
  * Quirks: in addition to main purely Free Debian image, a separate nonfree image is provided with support for internal wifi
 * [[https://www.armbian.com/olimex-teres-a64/|Armbian]]
  * Source: Debian (or Ubuntu) + Armbian + Armbian-maintained forks of kernel and bootloader
  * Build: debootstrap + [[https://github.com/armbian/build|custom scripts]]
 * [[ftp://staging.olimex.com/Allwinner_Images/A64-Teres/linux/xenial-teres-bspkernel-20190121_144941_EET-1_hdmi_out_v1_5.torrent|Olimex (torrent link)]]
  * Source: Ubuntu + Olimex + Olimex-maintained forks of kernel and bootloader
  * Build: qemu-debootstrap + [[https://github.com/OLIMEX/DIY-LAPTOP|custom scripts]]
 * [[ftp://staging.olimex.com/Allwinner_Images/A64-Teres/linux/armbian_experimental/|Olimex (Armbian)]]
  * Source: Ubuntu + Armbian + Olimex + Olimex-maintained forks of kernel and bootloader
  * Build: qemu-debootstrap + [[https://github.com/OLIMEX/build|custom scripts]]

For links, further information and discussion
see the [[https://www.olimex.com/forum/index.php?topic=6092.0|dedicated thread at the olimex forum]].

== Manual install ==
Buster and newer include boot-loader, kernel and arm64 userspace tools working out of the box.
Line 55: Line 100:
There are no real requirements for disk layout other than that the bootloader is stored in an area close to the start of the disk but outside any partition. Most microSD cards already come with a compatible partition layout, so you only have to change the type of the existing partition from Windows to Linux and format it with your favorite filesystem. There are no real requirements for disk layout
other than that the bootloader is stored in an area close to the start of the disk but outside any partition.
Most microSD cards already come with a compatible partition layout,
so you only have to change the type of the existing partition from Windows to Linux
and format it with your favorite filesystem.
Line 58: Line 107:
Starting with 4.17 linux contains a DT file for the teres. Unfortunately pwm support (necessary for the backlight and thus the display) didn't make it in, so you will probably want to either edit the official DT or get one from somewhere else until linux 4.18 is available.

Here is the DT that was used for testing the code submitted to linux including PWM:
http://friends.ccbib.org/harald/files/sun50i-a64-teres-i.dtb

=== arm trusted firmware (bootloader stage 2) ===

=== u-boot (bootloader stage 1 & 3) ===
mainline u-boot still misses a few bits like a pwm driver (to get display backlight up early), so you need to get this [[https://github.com/anarsoul/u-boot-pine64/commits/pinebook-wip-20180206|fork]] and then cherry-pick one more [[https://github.com/Icenowy/u-boot/commit/960ae79950a2b0a8d2e62bb3dfb5727764512a8b|commit]]:

{{{
git clone https://github.com/anarsoul/u-boot-pine64.git
cd u-boot-pine64
git remote add icenowy https://github.com/Icenowy/u-boot/
git fetch icenowy
git checkout -b teres origin/pinebook-wip-20180206
git cherry-pick icenowy/teres-i-mainline
}}}

You find information about compiling u-boot and writing the binaries to media in board/sunxi/README.sunxi64 - the basic steps are:

{{{
BL31=/path/to/atf/bl31.bin make teres_i_defconfig
BL31=/path/to/atf/bl31.bin make
dd if=spl/sunxi-spl.bin of=/dev/sdx bs=8k seek=1
dd if=u-boot.itb of=/dev/sdx bs=8k seek=5
}}}

The final files can also be downloaded:
 * [[http://friends.ccbib.org/harald/files/sunxi-spl.bin]]
 * [[http://friends.ccbib.org/harald/files/u-boot.itb]]

Buster and newer ships with working device-tree (DT) file for the teres.

=== u-boot ===

Stage 1 and 3 of bootstrapping the hardware is U-boot.

mainline u-boot supports Teres-I since 2019.05,
and the debian package DebPkg:u-boot-sunxi since release 2019.01+dfsg-5.

Built-in keyboard requires special care to get enabled in u-boot.

U-boot before v2020.01 fails to enable the built-in keyboard,
and require [[https://gitlab.denx.de/u-boot/u-boot/-/commit/1949232|this patch]] to be applied.
U-boot since v2022.04 (possible earlier) again fails to enable the built-in keyboard,
and require [[https://lists.denx.de/pipermail/u-boot/2022-June/485862.html|this patch]] to be applied.
The issue is tracked at DebianBug:935035.

==== arm trusted firmware ====

Stage 2 of bootstrapping the hardware is ARM Trusted Firmware.

The debian package DebPkg:arm-trusted-firmware has support for Teres I
using this binary:{{{
/usr/lib/arm-trusted-firmware/sun50i_a64/bl31.bin
}}}

Debian-packaged u-boot embeds this firmware since release 2020.04+dfsg-1.
Line 91: Line 137:
Since there is already a ubuntu system preinstalled on the teres, you can simple download [[https://packages.debian.org/sid/all/debootstrap/download|debootstrap from unstable]] and install it on ubuntu - it's only a shell script, so no dependency problems.

Then just follow the debootstrap chapter in the [[https://www.debian.org/releases/stable/arm64/apds03.html.en|installation manual]].

The default bootscript built into u-boot probably wont find all the files necessary to boot the system. To fix this we need to write a custom bootscript and reformat it with mkimage from the package u-boot-tools:
Follow the debootstrap chapter
in the [[https://www.debian.org/releases/stable/arm64/apds03.html.en|installation manual]].

The default bootscript built into u-boot probably won't find all the files necessary to boot the system.
The simplest way to fix this is to install DebPkg:u-boot-menu which should work out of the box.

Alternatively you can try write a custom bootscript
and reformat it with mkimage from the package u-boot-tools:
Line 100: Line 149:
Here is a minimal [[attachment:boot.txt.example|example bootscript]] which assumes that /dtb, /vmlinuz and /initrd.gz are symlinks to the real files. Here is a minimal [[attachment:boot.txt|example bootscript]]
which assumes that /dtb, /vmlinuz and /initrd.gz are symlinks to the real files.
Line 103: Line 153:
There is no support in the official installer yet. However it might be possible to copy the arm64 installer files and a suitable device tree file onto a microSD card with a bootload from external sources. If you try that approach, please share your experience.
Vanilla Debian may be installed onto the TERES-I using Debian-installer using the following procedure:

1. Using a host computer, download and configure the installation image:

{{{
wget -nd http://ftp.nl.debian.org/debian/dists/buster/main/installer-arm64/current/images/netboot/SD-card-images/firmware.teres_i.img.gz
wget -nd http://ftp.nl.debian.org/debian/dists/buster/main/installer-arm64/current/images/netboot/SD-card-images/partition.img.gz
zcat firmware.teres_i.img.gz partition.img.gz > complete_image.img
}}}

2. On the same computer you used to create the image above, run the following command:

{{{
lsblk
}}}

3. Still using the same host computer, insert a spare microSD card.
This microSD card will be used to run debian-installer in order to install Debian onto the TERES-I local eMMC.

4. Run the following command again:

{{{
lsblk
}}}

Verify that the device path of the microSD card is shown by comparing the output to the previously-issued command.
The device path should look something like /dev/sdX (and NOT the path to a partition e.g. /dev/sdX1).

5. Run the following command to burn the installation image to the microSD card:

{{{
sudo dd bs=4M if=/path/to/complete_image.img of=/dev/sdX status=progress oflag=sync
}}}

'''NOTE''': At this point, you may wish to follow this video walkthrough on ([[https://archive.org/details/install-vanilla-debian-olimex-teres-i|archive.org]][[https://odysee.com/@jc:a/installing-vanilla-debian-on-an-olimex-teres-i-laptop:9|odysee.com]]) which corresponds to the next steps in the installation process.

6. Insert the imaged microSD card into the TERES-I and power on the device.

7. U-Boot will launch and the boot select menu will display Debian-installer as an option.
Select your language, location, and keyboard settings.
Select your desired host name and domain name.
Network hardware will now be scanned and you may select your mirror and proxy settings.
If you receive a "bad mirror" error, try using an RJ45-to-USB adapter and try detecting network hardware again via the "Go Back" menu option.
Set up users and passwords, and choose a time zone.
Choose a partitioning method.
When you reach the "Partitioning disks" menu, you will be prompted to "select disk to partition."
You should see two options:

 * MMC/SD card #1 (mmcblk0) - XX.X GB SD XXXXX
 * MMC/SD card #3 (mmcblk2) - 14.8 GB MMC B1J56L

Select the MMC option.
Choose a partioning scheme.
Select "Finish partitioning and write changes to disk" and select "Yes."
Wait for a while.
When you reach the software selection menu, toggle what software to install by pressing <Space> and "Continue" using <Enter>.

8. At the conclusion of the installation, you will be prompted to remove the installation media and either "Go Back" or "Continue".
If you remove the microSD card now and select "Continue" to reboot the laptop, you will likely experience the laptop showing a blank screen (see Troubleshooting section below).
Instead, leave the microSD card inserted and select "Continue" to reboot the device.
When U-Boot appears (like it did when you were intentionally installing Debian), remove the microSD card.
Depending how long you wait to remove the microSD card, several errors may be shown due to missing files, but ignore them.
The TERES-I will continue to boot onto the freshly-installed Debian system residing on local eMMC storage.
Line 106: Line 219:
If the screen remains blank or the system doesn't boot (is stuck in u-boot or initramfs) you can connect a serial console. The serial console is multiplexed with the headphone output. Instructions how to make or buy a proper connector are at the olimex forum. If the screen remains blank or the system doesn't boot (is stuck in u-boot or initramfs)
you can connect a serial console.
The serial console is multiplexed with the headphone output.
Instructions how to make or buy a proper connector are at the Olimex forum.
Line 109: Line 225:

== Backlight ==

The backlight is adjustable by echo'ing values 0-10 to `/sys/class/backlight/backlight/brightness`
since Linux 5.2.

Keys to control backlight (and other media keys)
need udev 245 or newer.

Older udev can be taught as well:
Add file `/etc/udev/hwdb.d/70-keyboard.hwdb` with this content:{{{
###########################################################
# Olimex
###########################################################

# Teres-I
evdev:input:b0003v15BAp003C*
 KEYBOARD_KEY_70066=sleep # Fn+F1
 KEYBOARD_KEY_700f6=wlan # Fn+F2
 KEYBOARD_KEY_700c7=f21 # Fn+F3 touchpad toggle
 KEYBOARD_KEY_7006f=brightnessdown # Fn+F7
 KEYBOARD_KEY_70070=brightnessup # Fn+F8
 KEYBOARD_KEY_7006e=switchvideomode # Fn+F9
}}}

One way to tie backlight keys to backlight control is with package `backlightctl`
and adding the file `/etc/udev/rules.d/90-brightnessctl.rules` with this content:{{{
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chown nobody /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp nobody /sys/class/leds/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp input /sys/class/leds/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chmod g+w /sys/class/leds/%k/brightness"
}}}
Line 115: Line 265:
 (not covered yet) LCD works with simplefb framebuffer.

Mali-400 MP2 ("Utgard") GPU is recognized since Linux 5.2 but not yet used.

Use of Mali GPU requires the lima driver,
developed as part of Mesa3d in (among others) package DebPkg:libgl1-mesa-dri,
where the lima driver is expected enabled from release 4.19.2 onwards.

Possibly use of Mali GPU additionally requires X11 driver fbturbo,
not currently packaged for Debian (see DebianBug:760025).

Video decoding/encoding accelerator [[https://linux-sunxi.org/Video_Engine|Video Engine]]
is supported since Linux 5.0.
Use of Video Engine however requires [[https://linux-sunxi.org/Cedrus|Cedrus]]
(and wrappers e.g. for vdpau and ffmpeg)
not currently packaged for Debian.

As of 2021-09-22,
direct uAPI support in GStreamer is [[http://briandaniels.me/2021/07/06/hardware-accelerated-video-playback-on-the-pinephone-with-clapper.html|possible but not quite available]],
and support via V4L2 requests for mpv is [[https://xnux.eu/devices/feature/cedrus-pp.html|maybe usable too]]
using [[https://github.com/uniformbuffer/libva-v4l2-request|experimental fork of libva-v4l2-requests driver]].
Line 121: Line 291:
## First say what's the Sound adapter model (lspci may help) ## First say what's the Sound adapter model
Line 125: Line 295:
== Mouse ==
 (not covered yet)
Line 129: Line 296:
## Have you tested Hibernation and/or
## Then explain how to get it working
 (not covered yet)
Sleep is supported since Linux 4.19.

Battery status data is available since Linux 5.2,
at non-standard path `/sys/class/power_supply/axp20x-battery`.
Line 134: Line 302:
 (not covered yet)

== Modem ==
Realtek RTL8723BS,
requiring non-free package DebPkg:firmware-realtek

A possible race condition between wifi driver and mmc driver
is avoided by adding "rtl8723bs" to the file /etc/initramfs-tools/modules
and then regenerating initramfs with "update-initramfs -u".
This issue and workaround was found [[https://en.opensuse.org/HCL:Teres-I|here]].

== Bluetooth ==
Line 152: Line 326:
  iProduct 2 Generic Platform OHCI controller   iProduct 2 SW USB2.0 'Open' Host Controller (OHCI) Driver
Line 175: Line 349:
  iProduct 2 EHCI Host Controller
}}}
''USB Host controllers entries (without OHCI, UHCI, EHCI) are removed too.''
  iProduct 2 SW USB2.0 'Enhanced' Host Controller (EHCI) Driver
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  bDeviceClass 9 Hub
  bDeviceProtocol 0 Full speed (or root) hub
  iProduct 2 SW USB2.0 'Open' Host Controller (OHCI) Driver
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  bDeviceClass 9 Hub
  bDeviceProtocol 0 Full speed (or root) hub
  iProduct 2 SW USB2.0 'Enhanced' Host Controller (EHCI) Driver
}}}
Line 196: Line 376:
Line 199: Line 378:
### Keep only one good category and remove others
## CategoryLaptopComputer | CategoryDesktopComputer | CategoryEmbeddedComputer
----

Translation(s): none

DebianOn is an effort to document how to install, configure and use Debian on some specific hardware. Therefore potential buyers would know if that hardware is supported and owners would know how get the best out of that hardware.

The purpose is not to duplicate the Debian Official Documentation, but to document how to install Debian on some specific hardware.

If you need help to get Debian running on your hardware, please have a look at our user support channels where you may find specific channels (mailing list, IRC channel) dedicated to certain types of hardware.

Introduction

The Teres-I is a DIY open hardware laptop sold by Olimex. Olimex has stated that they intend the Teres-I to be very modular, allowing main boards built around different SoCs to be used interchangeably. However, the only main board available at the moment is based on the Allwinner A64 SoC with 2GB RAM and 16GB eMMC internal storage. The CPU is supported by the arm64 architecture in debian. armhf should work too, but is untested.

The laptop is sold with linux (ubuntu + vendor supplied kernel) preinstalled. Source code is only partially available for the vendor kernel, which means that users of the preinstalled system are permanently stuck with an old version of linux. On the other hand since a linux system is available, no external computer and no cross-compilation is required to bootstrap a debian system.

While debian runs fine from eMMC internal storage, it is common to install debian to an external microSD card (there is one slot available) to have both systems available. That's also what is described in this guide.

Overall Status

To get an overview of mainline kernel support, see the status matrix of the linux sunxi community.

Core Components

[ATTACH]

Boot Standard Kernel:

{OK}

Detect mmc:

{OK}

Extra Features

CPU Frequency Scaling

{OK}

Hibernation

[?]

Sleep / Suspend

{OK}

Xorg

{OK}

- OpenGL

[?]

- Resize-and-Rotate(randr)

[?]

Switch to External Screen

{X} - only with non-Mainline patches e.g. included in Olimex images

Mouse

- Built-in (Touchpad)

{OK}

Wireless/Wifi

X-(

Keyboard's Hotkeys (a.k.a. media keys)

{OK} - since udev 245

Legend :
{OK} = OK ; {X} Unsupported(No Driver) ; /!\ = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
{i} = Configuration Required; X-( = Only works with a non-free driver and or firmware

Installation

The laptop is sold as a kit for self-assembly. Here we assume that the kit is completely assembled and correctly functioning with the preinstalled system.

Image install

Several images exist for directly writing to your microSD card:

  • Debian Installer

  • Redpill

    • Source: Debian
    • Build: Boxer + qemu + multistrap + custom scripts

    • Quirks: in addition to main purely Free Debian image, a separate nonfree image is provided with support for internal wifi
  • Armbian

    • Source: Debian (or Ubuntu) + Armbian + Armbian-maintained forks of kernel and bootloader
    • Build: debootstrap + custom scripts

  • Olimex (torrent link)

    • Source: Ubuntu + Olimex + Olimex-maintained forks of kernel and bootloader
    • Build: qemu-debootstrap + custom scripts

  • Olimex (Armbian)

    • Source: Ubuntu + Armbian + Olimex + Olimex-maintained forks of kernel and bootloader
    • Build: qemu-debootstrap + custom scripts

For links, further information and discussion see the dedicated thread at the olimex forum.

Manual install

Buster and newer include boot-loader, kernel and arm64 userspace tools working out of the box.

partitioning

There are no real requirements for disk layout other than that the bootloader is stored in an area close to the start of the disk but outside any partition. Most microSD cards already come with a compatible partition layout, so you only have to change the type of the existing partition from Windows to Linux and format it with your favorite filesystem.

device tree

Buster and newer ships with working device-tree (DT) file for the teres.

u-boot

Stage 1 and 3 of bootstrapping the hardware is U-boot.

mainline u-boot supports Teres-I since 2019.05, and the debian package u-boot-sunxi since release 2019.01+dfsg-5.

Built-in keyboard requires special care to get enabled in u-boot.

U-boot before v2020.01 fails to enable the built-in keyboard, and require this patch to be applied. U-boot since v2022.04 (possible earlier) again fails to enable the built-in keyboard, and require this patch to be applied. The issue is tracked at 935035.

arm trusted firmware

Stage 2 of bootstrapping the hardware is ARM Trusted Firmware.

The debian package arm-trusted-firmware has support for Teres I using this binary:

/usr/lib/arm-trusted-firmware/sun50i_a64/bl31.bin

Debian-packaged u-boot embeds this firmware since release 2020.04+dfsg-1.

rootfs

Follow the debootstrap chapter in the installation manual.

The default bootscript built into u-boot probably won't find all the files necessary to boot the system. The simplest way to fix this is to install u-boot-menu which should work out of the box.

Alternatively you can try write a custom bootscript and reformat it with mkimage from the package u-boot-tools:

mkimage -T script -d boot.txt /boot.scr

Here is a minimal example bootscript which assumes that /dtb, /vmlinuz and /initrd.gz are symlinks to the real files.

Using debian installer

Vanilla Debian may be installed onto the TERES-I using Debian-installer using the following procedure:

1. Using a host computer, download and configure the installation image:

wget -nd http://ftp.nl.debian.org/debian/dists/buster/main/installer-arm64/current/images/netboot/SD-card-images/firmware.teres_i.img.gz
wget -nd http://ftp.nl.debian.org/debian/dists/buster/main/installer-arm64/current/images/netboot/SD-card-images/partition.img.gz
zcat firmware.teres_i.img.gz partition.img.gz > complete_image.img

2. On the same computer you used to create the image above, run the following command:

lsblk

3. Still using the same host computer, insert a spare microSD card. This microSD card will be used to run debian-installer in order to install Debian onto the TERES-I local eMMC.

4. Run the following command again:

lsblk

Verify that the device path of the microSD card is shown by comparing the output to the previously-issued command. The device path should look something like /dev/sdX (and NOT the path to a partition e.g. /dev/sdX1).

5. Run the following command to burn the installation image to the microSD card:

sudo dd bs=4M if=/path/to/complete_image.img of=/dev/sdX status=progress oflag=sync

NOTE: At this point, you may wish to follow this video walkthrough on (archive.orgodysee.com) which corresponds to the next steps in the installation process.

6. Insert the imaged microSD card into the TERES-I and power on the device.

7. U-Boot will launch and the boot select menu will display Debian-installer as an option. Select your language, location, and keyboard settings. Select your desired host name and domain name. Network hardware will now be scanned and you may select your mirror and proxy settings. If you receive a "bad mirror" error, try using an RJ45-to-USB adapter and try detecting network hardware again via the "Go Back" menu option. Set up users and passwords, and choose a time zone. Choose a partitioning method. When you reach the "Partitioning disks" menu, you will be prompted to "select disk to partition." You should see two options:

  • MMC/SD card #1 (mmcblk0) - XX.X GB SD XXXXX
  • MMC/SD card #3 (mmcblk2) - 14.8 GB MMC B1J56L

Select the MMC option. Choose a partioning scheme. Select "Finish partitioning and write changes to disk" and select "Yes." Wait for a while. When you reach the software selection menu, toggle what software to install by pressing <Space> and "Continue" using <Enter>.

8. At the conclusion of the installation, you will be prompted to remove the installation media and either "Go Back" or "Continue". If you remove the microSD card now and select "Continue" to reboot the laptop, you will likely experience the laptop showing a blank screen (see Troubleshooting section below). Instead, leave the microSD card inserted and select "Continue" to reboot the device. When U-Boot appears (like it did when you were intentionally installing Debian), remove the microSD card. Depending how long you wait to remove the microSD card, several errors may be shown due to missing files, but ignore them. The TERES-I will continue to boot onto the freshly-installed Debian system residing on local eMMC storage.

Troubleshooting

If the screen remains blank or the system doesn't boot (is stuck in u-boot or initramfs) you can connect a serial console. The serial console is multiplexed with the headphone output. Instructions how to make or buy a proper connector are at the Olimex forum.

Configuration

Backlight

The backlight is adjustable by echo'ing values 0-10 to /sys/class/backlight/backlight/brightness since Linux 5.2.

Keys to control backlight (and other media keys) need udev 245 or newer.

Older udev can be taught as well: Add file /etc/udev/hwdb.d/70-keyboard.hwdb with this content:

###########################################################
# Olimex
###########################################################

# Teres-I
evdev:input:b0003v15BAp003C*
 KEYBOARD_KEY_70066=sleep                               # Fn+F1
 KEYBOARD_KEY_700f6=wlan                                # Fn+F2
 KEYBOARD_KEY_700c7=f21                                 # Fn+F3 touchpad toggle
 KEYBOARD_KEY_7006f=brightnessdown                      # Fn+F7
 KEYBOARD_KEY_70070=brightnessup                        # Fn+F8
 KEYBOARD_KEY_7006e=switchvideomode                     # Fn+F9

One way to tie backlight keys to backlight control is with package backlightctl and adding the file /etc/udev/rules.d/90-brightnessctl.rules with this content:

ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chown nobody /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp nobody /sys/class/leds/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp input /sys/class/leds/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chmod g+w /sys/class/leds/%k/brightness"

Display

LCD works with simplefb framebuffer.

Mali-400 MP2 ("Utgard") GPU is recognized since Linux 5.2 but not yet used.

Use of Mali GPU requires the lima driver, developed as part of Mesa3d in (among others) package libgl1-mesa-dri, where the lima driver is expected enabled from release 4.19.2 onwards.

Possibly use of Mali GPU additionally requires X11 driver fbturbo, not currently packaged for Debian (see 760025).

Video decoding/encoding accelerator Video Engine is supported since Linux 5.0. Use of Video Engine however requires Cedrus (and wrappers e.g. for vdpau and ffmpeg) not currently packaged for Debian.

As of 2021-09-22, direct uAPI support in GStreamer is possible but not quite available, and support via ?V4L2 requests for mpv is maybe usable too using experimental fork of libva-v4l2-requests driver.

Audio

  • (not covered yet)

Power Management

Sleep is supported since Linux 4.19.

Battery status data is available since Linux 5.2, at non-standard path /sys/class/power_supply/axp20x-battery.

WiFi

Realtek RTL8723BS, requiring non-free package firmware-realtek

A possible race condition between wifi driver and mmc driver is avoided by adding "rtl8723bs" to the file /etc/initramfs-tools/modules and then regenerating initramfs with "update-initramfs -u". This issue and workaround was found here.

Bluetooth

  • (not covered yet)


System Summary

lsusb

lsusb -v | grep -E '\<(Bus|iProduct|bDeviceClass|bDeviceProtocol)' 2>/dev/null

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  bDeviceClass            9 Hub
  bDeviceProtocol         0 Full speed (or root) hub
  iProduct                2 SW USB2.0 'Open' Host Controller (OHCI) Driver
Bus 001 Device 005: ID 15ba:003c Olimex Ltd. 
  bDeviceClass            0 (Defined at Interface level)
  bDeviceProtocol         0 
  iProduct                2 TERES Keyboard+Touchpad
  (Bus Powered)
Bus 001 Device 003: ID 1908:2311 GEMBIRD 
  bDeviceClass          239 Miscellaneous Device
  bDeviceProtocol         1 Interface Association
  iProduct                2 USB2.0 PC CAMERA
      (Bus Powered)
  bDeviceClass          239 Miscellaneous Device
  bDeviceProtocol         1 Interface Association
  (Bus Powered)
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
  bDeviceClass            9 Hub
  bDeviceProtocol         1 Single TT
  iProduct                1 USB2.0 Hub
  bDeviceClass            9 Hub
  bDeviceProtocol         0 Full speed (or root) hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  bDeviceClass            9 Hub
  bDeviceProtocol         0 Full speed (or root) hub
  iProduct                2 SW USB2.0 'Enhanced' Host Controller (EHCI) Driver
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  bDeviceClass            9 Hub
  bDeviceProtocol         0 Full speed (or root) hub
  iProduct                2 SW USB2.0 'Open' Host Controller (OHCI) Driver
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  bDeviceClass            9 Hub
  bDeviceProtocol         0 Full speed (or root) hub
  iProduct                2 SW USB2.0 'Enhanced' Host Controller (EHCI) Driver

Resources

Attachments

Some configuration files and sample outputs.

  • [get | view] (2018-04-07 09:22:19, 0.2 KB) [[attachment:boot.txt]]
 All files | Selected Files: delete move to page copy to page

Credits


CategoryLaptopComputer