Linux on the Acer Swift 1
Here are a few general observations about the Acer Swift 1, and a few tips on running Linux on it. My particular experiences are of the Swift 1 SF114-32, a 14" model I bought in the late summer of 2019.
- Is the Acer Swift 1 a good computer?
- Does Linux work on the Acer Swift 1?
- Tweaking the Touchpad
- Enabling Tear Free video
- Disabling Frame Buffer Compression
- Two Years Later
Is the Acer Swift 1 a good computer?
That really depends on what you want to use it for. The CPU certainly isn't the fastest one out there. It's not for heavy gamers, perhaps not even casual ones. Neither is it suitable as a workstation for heavy duty work of any kind, be it graphics, sound, video editing or software development.
I bought it because I wanted a completely silent machine: the Swift 1 has no cooling fans and no mechanical hard drive. It is dead silent, very light and offers excellent battery time.
I managed to get a hold of a less common model: mine has a Celeron N4100 CPU, 8 gigs of RAM and a 256 gig SSD. The usual configuration seems to be a Pentium N5000 CPU, 4 gigs of RAM and a 128 gig SSD. I would not have bought the 4 gig model, since web browsers these days don't seem to play nice unless they can hog insane amounts of RAM. But I digress.
I use it for the following:
- Web surfing with Firefox
- Recreational programming (typically one-file scripts in node.js or Python)
- Commodore 64 emulation using VICE
- Creating pixel graphics in Grafx2 (native) and Pixcen (Wine)
- Home accounts using GNumeric
I've had no performance issues with these tasks. When idling, the CPU temperature hovers somewhere around 35 degrees Celsius. During normal usage, the CPU temperature stays around or slightly above 40 degrees Celsius. When running VICE in full screen or watching full-HD CPU decoded video on Netflix, CPU temperature rises above 50 degrees Celsius and sometimes peaks at 60 degrees Celsius.
The hardware itself feels stable. As of writing, my current uptime is 12 days and there seems to be no problem with sleeping and waking up the computer. I've tried several brands of USB sticks, including a USB-to-Compact Flash adapter, with no issues. I've also connected it to an external monitor with the HDMI port and mirrored the display without trouble using xrandr. My USB mouse and USB keyboard works without issues.
I find the matte screen bright, vivid and pleasant to look at for long amounts of time. The speakers are surprisingly powerful for their size.
Overall, I am pleased with the Swift 1. It's an affordable home computer suitable for the kind of tasks I normally use my home computer for, and it is very reassuring to know there will never be any noise issues whatsoever.
Complaints
I do have a few gripes with the Swift 1, but they're mostly minor ones.
- The matte black aluminum case is really easy to smudge with your fingers. It looks great out of the box, but just opening and closing the lid will make it look quite filthy.
- The keyboard is kind of small and the key travel is kind of short, but that goes for pretty much all laptops of this size.
- The touchpad is large and very sensitive. I often nudge it while typing. This can of course be countered by turning it off, for example with some kind of touchpad control software.
- Dust quickly collects around the edges of the touchpad.
- It does not wake from sleep when the lid is closed: in this mode, key presses on an external USB keyboard simply does not seem to register. Opening the lid will wake the computer up as expected. This is apparently an issue with most (all?) of Acer's laptops and not Linux related.
Does Linux work on the Acer Swift 1?
Short answer: Yes.
Long answer: Yes, but with reservations.
- Reservation 1: The touchpad works so-so. It's not a major issue for me, because I almost always use a mouse.
- Reservation 2: I haven't tried the webcam, microphone or fingerprint reader because I don't use them.
- Reservation 3: The Linux kernel and graphics driver seems to have a problem with frame buffer compression on the Gemini Lake architecture. This results in reoccurring flicker in the top few lines of pixels on the screen when TearFree is used to force vsync. It can be fixed by turning off FBC. (Update 2020-07-26: I'm currently on kernel 5.3.0-62, which doesn't seem to have this bug anymore. I have no further information on when this might have been fixed.)
No matter the distro, the FBC problem should be present, since it's a driver issue. I opted for Lubuntu 18.04 LTS. It's a suitably lightweight distribution for the Swift 1, with the advantage of Ubuntu's massive package repository. Since I don't generally use a desktop environment, but do enjoy some of the tools that are usually supplied with one, the choice of LXDE feels right. I quickly installed fvwm on the system and, unsurprisingly, it performs very well.
Tweaking the Touchpad
The touchpad actually works very nicely in Windows, but it does have some usability issues in Linux. My normal MO of resting an index finger on the left click button and using my other index finger to move the pointer doesn't work, because the whole area, including the clickable buttons, is touch-sensitive. In Linux, this seems to be a problem.
I find that turning off the "advanced" touchpad mode in the BIOS and exclusively using the tap functionality works best for me.
-
Here is a synaptics config
with my tweaks. It should reside in
/etc/X11/xorg.conf.d/70-synaptics.conf. - I have also written a bash script to toggle the touchpad on and off.
Enabling Tear Free video
The instructions are for Lubuntu 18.04 LTS. The location of files might differ on your particular distribution.
Vertical blank synchronization is the Achilles heel of X11, but thankfully the Swift 1 has Intel HD graphics and the i915 driver supplied with Lubuntu has an excellent option for mitigating this. The only thing I can't understand is why it's not turned on by default - it's like having a setting called "Fix All Bugs" and leaving it turned off. Anyway, here's how to do it:
-
As root, create the file
/etc/X11/xorg.conf.d/20-intel.conf:sudo mkdir /etc/X11/xorg.conf.d sudo nano /etc/X11/xorg.conf.d/20-intel.conf
-
Make it look like this:
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "TearFree" "true" EndSection
- Restart X11 (by logging out of your desktop/window manager session). Log back in and you should have vsynced video.
Disabling Frame Buffer Compression
The instructions are for Lubuntu 18.04 LTS. The location of files or even the method of passing arguments to the kernel
might differ on your particular distribution.
More information can be found in this bug report on freedesktop.org.
(Update 2020-07-26: I'm currently on kernel 5.3.0-62, which doesn't seem to have this bug anymore. I have no further information on when this might have been fixed. Depending on the kernel version, disabling FBC might not be needed on your system.)
-
Edit
/etc/default/grubas root:
sudo nano /etc/default/grub -
The value we're going to add to is
GRUB_CMDLINE_LINUX_DEFAULT.
It probably looks something like this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" -
Add the parameter
i915.enable_fbc=0, which will tell the i915 graphics driver to disable frame buffer compression:
GRUB_CMDLINE_LINUX_DEFAULT="i915.enable_fbc=0 quiet splash" - Save the file.
- Run update-grub as root:
sudo update-grub - Reboot and enjoy flicker-free, tear free graphics.
Two Years Later
Update for summer 2021: I'm still mostly pleased with the Swift 1. I do all my main home computing on it. Sometimes it doesn't immediately reconnect to my WiFi after awakening from sleep, but other than that I've experienced no particular problems. I've started running Amiga emulation on it, which works nicely. Even though it's got a "slow" CPU, it can still manage most websites. Discord and Twitch performance is abysmal, at least in Firefox on Linux, but then again they are dreadful sites and I'm better off using them as little as possible or not at all (Though the demo scene seems intent on selling its soul to those and other similar vultures of the net).
My verdict stands: if you don't need gaming or video chatting, running Linux on the Swift 1 works well.