Getting started with the Teres-1
I recently got my Olimex Teres-1 and I must say I really like this small netbook. It doesn't have the fastest CPU, the most memory or best screen, but for most purposes it's good enough. Besides, it's not meant as a high end device but a hacker toy, and one of the first devices which is (almost) completely open. You can download all schematics, all sources, blueprints, everything! This alone makes it an amazing device.
The Teres comes preloaded with Ubuntu 16.04 and the Mate desktop. I prefer Xfce on my machines, but I can work with Mate as well - it's almost identical so I see no reason to change it.
One of the gotchas of this device is that it doesn't have an x86-CPU, but an ARM-chip which are more commonly used in cellphones, routers etc.
The good thing about open source software is that most programs can simply be recompiled for different CPU architectures and you get all the good stuff straight from the Ubuntu Repositories. You don't really notice that you're not working on a true "PC". But getting things running which aren't part of the core system is a bit tricky.
Working with the Teres-1
As I mentioned, this device isn't very fast. However one of the things that make it "feel" slow is the I/O performance. The internal (eMMC) disk can't be read faster than 20MB/s. Even adding a high-speed SD-card doesn't make it faster, I measured around 22MB/s in the right hand slot. However it would be interesting to combine the internal disk and an SD-card in a RAID configuration as the bandwidth isn't shared between the two and theoretically up to 40MB/s read speed would be achievable. It would be nice if it had another SD-card slot though, so you can use one for a permanently inserted card and the other for a removable. (My Acer Aspire One had a setup like this and I always left one "huge" 16GB card in one slot). Another option would be an internal USB-Stick, but with an external one I again measured around 22MB/s - ?? - something's going on here.
What's a bit annoying is that video decoding doesn't run very smooth. YouTube only works up to 480p in Firefox and if you full-screen it, the framerate gets quite low, so it's probably doing software rendering. MPlayer and VLC try to use the GPU, some videos work, other just throw random pixel garbage on the screen. But that's just something the devs need to work on a bit more. The Mali GPU seems to be capable of doing all that stuff.
The keyboard is quite usable, but I'm still quite used to tiny netbook keyboards.
The screen has an acceptable resolution for a small display and is reasonably well readable in sunlight - combined with the good battery life this makes it a useful device for working outside. As with most TN-displays the angle isn't great but you won't cram a lot of people in front of a tiny screen anyway... It's a bit frustrating that the Mini-HDMI port isn't implemented yet, but the developers are working on that.
Nextcloud is essential for me as I keep all my stuff in in, but there are no aarch64 packages available. Fortunately building it from source is very easy and reasonably fast on the Teres-1:
sudo apt-get install libsqlite3-dev qt5-default libqt5webkit5-dev qt5keychain-dev libssl-dev cmake build-essential git clone https://github.com/nextcloud/client_theming.git cd client_theming git submodule update --init --recursive mkdir build-linux cd build-linux cmake -D OEM_THEME_DIR=$(realpath ../nextcloudtheme) ../client make sudo make install echo /usr/local/lib/aarch64-linux-gnu | sudo tee /etc/ld.so.conf.d/local.conf sudo ldconfig
Except for the last two commands and getting cmake, everything comes straight from the Nextcloud documentation. But after installing Nextcloud is unable to find its sync libraries so that needs to be added to ld.so.conf which is what the last two lines do.
The Nextcloud sync client will show up in Accessories
Netbeans can be easily installed from apt, but it needs one minor tweak to the configfile so that it starts properly. Edit /etc/netbeans.conf and remove the first parameter from the commandline - something with "client". I don't remember how it is called exactly, but it was the first parameter and had the word client in it. Then it even runs quite smoothly on this tiny notebook. At least with small swing apps, I haven't tried setting up more complicated things.
There are no builds for this architecture on telegram.org but it should be possible to compile it. I haven't with it yet as the Web client works reasonably well in Firefox. Generating the keys took a few minutes though, so don't close the tab prematurely, It will connect eventually - and it only has to do this once.
Google chrome doesn't come in arm64 yet. Or at least it's not easily found online - those ARM based Chromebooks need _some_ version of Chrome... But we can get the open source Chromium browser which is basically the same thing. It can be installed just by typing:
sudo apt install chromium-browser
If it asks to overwrite the config file during installation, keep the original as it contains some optimizations. Then it only runs if you add "--no-sandbox" to /etc/chromium-browser/default which might compromise security. I can use it to test with Chrome but I'll just use Firefox for my regular browsing.
Installing eagle (work in progress)
Yeah, I know, working with a completely open-source laptop - then I want to install proprietary software on it :( - however Eagle is just one of the things I can't live without (yet). Who needs Adobe and MS-Office? Give me GIMP, Inkscape and LibreOffice any time - but until I learn how to use KiCad efficiently I'll stick to Eagle for part of my professional work. Eagle can't be recompiled for aarch64 as it is closed source - so we have to use an emulator. Luckily emulating a whole PC isn't neccessary, we can use qemu's userspace emulation. I don't know how fast this will be but I hope it will be usable to at least look stuff up. I'll do most design work on my desktop PC with two screens anyway.
At the moment I'm having difficulties getting the amd64 version of all the libraries installed, maybe I'll just settle for a chroot and symlink everything though. I'll update this post once I got it running. In the meantime, if I really need Eagle, I will use VNC or X forwarding to one of my amd64 Linux boxens.
Building a USB (and Solar!) charger
The Teres-1 has a very well built charging circuitry - it will take whatever power you give it, as long as it's 5V or less. Seriously, don't go over 5V or it will blow a fuse and you have to do some SMD board repair. But as long as it's at or below 5V it will be fine. With the notebook running, screen at full brightness and a battery at around 50%, the peak power draw was just below 3A (15W). If you current-limit the output of your supply, the notebook will still charge, but slower. At some point it's not enough power to run the device so it will also drain the battery to compensate. I built a simple USB to barrel-jack adapter cable and now I can (slowly) charge my Teres-1 from any power bank or other USB power source. Here are some more figures, measured at the charging port:
- 3.0A - Peak when running and charging
- 2.5A - Nominal when running and charging
- 1.7A - Idle, screen at full brightness
- 1.2A - Idle, screen at lower brightness
- 0.1A - Standby, lid closed
- 0.0A - Power off
Here's the Teres-1 powered off a solar panel. I bought an Anker 21W (realistically about 10-15W) solar panel which managed to keep the battery topped up even in the late afternoon.
(This photo was taken just after I there was no direct sunlight shining on the panel anymore)