So, previously I wrote about Ubuntu 20.04 on the Surface Pro 4 and noted that it works pretty well, with a bit of tweaking and playing around. To be fair, after I had tweaked it, it does work nicely with Ubuntu. The chances of me running Windows on it again are slim to none. Especially as I now have Fedora Core 32 on Surface Pro 4 running like a dream instead. And, I think, it’s quicker and smoother than Ubuntu. There seems to be less fluff.
And just to prove it, there’s a screenshot on the right 🙂
Notice a few things about that screenshot. I’ve customized it. Some people won’t necessarily like that. But I do like having my regularly used applications showing as favourites on the bottom there. It’s a little bit Windowsesque I guess. But I know where to find them. FC32 by default has a dashboard on the left of the screen which is accessible when you press the ‘Super’ key. In the case of the Surface Pro 4 that’s the Windows key.
Pretty much everything. Sound works straight out of the box. In my case I needed to switch the sound output to be the analogue speakers because I’m using a Surface Dock which has it’s own sound card built in. Fedora Core 32 actually remembers my choice, which Ubuntu didn’t.
Bluetooth and WiFi work straight away without any issues.
Dual monitor with different DPIs works straight out of the box. This is because Fedora has apparently been using Wayland for ages. This was one of the reasons I decided to give FC32 a go after all these years of me using Ubuntu. I like it.
What Doesn’t Work With Fedora Core 32 on Surface Pro 4?
Cameras don’t work. You won’t find a version of Linux that works with the cameras because that’s a kernel thing and no-one has written any kernel drivers for these cameras. It’s a shame because although it’s not something I’d use often, it might be nice now and then.
Touch screen won’t work with the standard Fedora Core kernel. But it does work with the Linux-Surface/Linux-Surface kernel from github. Beware though, there is no LTS kernel available for Fedora like there is for Ubuntu, so you can either have single touch (ie, touchscreen scrolling in Firefox for example) or you can have the pen working. You can’t have both. I’ll get in to that later.
Installing Fedora Core 32 on Surface Pro 4
I’m not going to get into the actual process of installing Fedora Core 32 onto a computer. The Fedora Documentation goes into extensive detail about how to do it. If you’ve currently got Windows 10 running on your Surface Pro 4 then I also recommend using Rufus to create the USB. You’ll need to use a USB with at least 4Gigabytes available.
If you’re going to install Fedora Core 32 on Surface Pro 4 from an existing Linux installation then you can simply use the dd command. If you have no other USB drives plugged in, you can probably use the command;
dd if="Your Fedora Image.iso" of=/dev/sda status=progress bs=8M oflag=sync
If your USB is a decent USB3 drive (such as the SanDisk Ultra32 Fit) then it should write it reasonably quickly. Because it’ll be a Live Image you can boot it up and have a play.
Getting The Surface Pro 4 to Boot From USB
The easiest way to adjust the boot sequence for the SP4 is to shut it down (whether you’re running Linux already, or Windows).
While the SP4 is shut down, hold the Volume Up physical key at the top of the Screen (in landscape mode). Then press the Power On button (which is next to it). Once you see the Surface logo you can let go of both buttons. This will take you to the EFI screen where you can adjust the Boot Sequence. You’ll need to make sure that USB Device is an available boot option and preferably that it’s the topmost entry. If the USB entry isn’t at the top, you can drag and drop it using the touchpad on the Surface Pro 4 keyboard. You may be able to use the touchscreen too to do that – I’m not actually sure.
Follow the Fedora Core 32 instructions once your Surface Pro 4 has booted. There’s nothing special to get the Pro 4 working out of the box.
Why Run Fedora Core 32 on Surface Pro?
To be fair, if you’re reading this you probably already know why. At least you have a pretty good idea why you would run Linux on your Surface Pro 4 anyway. In case you’re not sure though, I did answer this question in my article about Ubuntu 20.04 on the Surface Pro 4 so I’d recommend having a quick read of that. Short version: Privacy and Speed. Whichever order you prefer them in 😉
In that article I noted that lack of sofware was a reason to not use Linux on a Surface Pro 4. Specifically in my case, Minecraft Bedrock Edition, Affinity Photo and Affinity Designer. Well Minecraft Bedrock Edition does work on Fedora 32 and I’ll go through that in a minute because it needs some tweaks to get it going. Affinity Designer isn’t available for Linux (shame!) but Inkscape is a really good alternative and it’s free. The Gimp is a Pixel drawing tool, but to be honest, it’s no competition for Affinity Photo. For now I have a Windows 10 VM I can spin up across the network if I have any photo editing to do. Openshot is available for editing videos and works nicely under Fedora straight from the Gnome Store. My Surface Pro 4 does have 8G of RAM though, it might not work as well on 4Gig.
I’ve not benchmarked it, but Fedora feels a lot snappier than Ubuntu on the Surface Pro 4.
Things To Tweak After You’ve Installed Fedora 32 on Surface Pro 4
WiFi Disconnecting On Fedora Core 32 on Surface Pro 4
So, most of it is going to work straight out of the box. However, you may find that your WiFi disconnects and won’t reconnect again until you reboot. This seems to be a generic problem across distributions since Ubuntu, Linux Mint Debian Edition (LMDE) and Fedora did it for me. The fix is simple;
Add the following lines to /etc/NetworkManager/NetworkManager.conf at the bottom;
[connection] wifi.powersave = 2 [device] wifi.scan-rand-mac-address = false
The 2 there tells Linux (or NetworkManager at least) to switch off power management for the WiFi card. Once I did that I never had a network problem again – either in 2.4Ghz or 5Ghz. And the 5Ghz connects at over 800Mbps on my network.
Install Dash To Panel Gnome Extension
If you don’t like the idea of your Favourite applications being on the left of your screen – and only visible if you click the ‘Activity’ label on the top left of the screen, or pressing the Windows key – then this Gnome extension is definitely for you.
The documentation for installing Gnome extensions seems to be horribly lacking. So here’s a bit of a guide – for how I did it anyway.
In Firefox go to https://extensions.gnome.org/ and install the Gnome Extensions Firefox extension. Yep – you need an extension to install extensions 🙂 But once you install that Firefox extension it’s easy.
Then do a search for ‘dash to panel’. If you have the Firefox Gnome Extension Extension installed you should be able to click on the Dash To Panel result and from there flick the little switch from Off to On. It should automatically install and then you can configure it from the Firefox screen too. It’ll open up a Gnome dialogue box to actually do the configuring. It’s pretty swish though.
Note that you do not need to download the extension (I did this first of all… And then had no idea what to do with it).
Getting Minecraft Bedrock Edition To Work On Fedora Core 32
So, if you read the Ubuntu tutorial I wrote you might be familiar with the Minecraft PE Launcher that I linked to. If not, it’s OK, I’ll go over it again here.
So, the best way to get Minecraft Bedrock Edition to work on Fedora Core 32 is to go to https://github.com/ChristopherHX/linux-packaging-scripts/releases/tag/appimage and download the AppImage version. Store that somewhere – Downloads will work. When it’s finished downloading, open up Files application and find the downloaded file. Right click it and choose Properties from the bottom of the menu. Choose Permissions then put a tick in the box marked Allow Executing File As A Program. Then close the dialogue box.
If you try to double click the AppImage file now it will just crash. You need to install some extra packages first, as the AppImage needs access to some 32 bit libraries. I’m not sure how long this step will be required for, but for now, it is.
To install the packages open a terminal and input the following;
sudo dnf update sudo dnf install glibc.i686 libstdc++.i686 libX11.i686 zlib.i686 mesa-libEGL.i686 mesa-dri-drivers.i686 mesa-libGL.i686 pulseaudio-libs.i686
Once you’ve installed those packages you’ll also need to issue the following command from the terminal;
sudo ln -s /etc/ssl/certs/ca-bundle.trust.crt /etc/ssl/certs/ca-certificates.crt
ChristopherHX states that this might not be necessary soon – but I’m not sure what his timescale is for fixing this one. Nevertheless, it works for now. And it’s really quite smooth running on my Surface Pro 4. The initial launcher screen size is all borked and you have to resize it every time you run the game but that’s minor.
Once it was up and running I also installed AppImageLauncher because that enables you to add Minecraft to the Favourites panel (whether you installed Dash To Panel or not) and moves the AppImage to a better location too.
Getting Docker To Run Properly On Fedora Core 32
To be fair, this might not be necessary if you use the standard Fedora repository Docker package. I don’t know because I always use docker-ce from the Docker repository. To install it, follow the instructions at https://docs.docker.com/engine/install/fedora/
When you come to the part where it says to issue the command docker run hello-world you may very well get a nasty error and it won’t work. The error may be the following;
docker: Error response from daemon: cgroups: cannot found cgroup mount destination: unknown.
This is because Fedora 32 uses a newer SystemD than Docker is set up for. Or something like that. I don’t know about all that to be fair. I found the answer on https://github.com/docker/for-linux/issues/219 but I don’t pretend to know all that much about it. Suffice to say, the fix is relatively easy and I can’t see any side-effects at the minute… But that might change in future…
sudo dnf install -y grubby sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0" sudo reboot
There’s other solutions listed on there too – but that’s the one I used.
Getting The Surface Pen to Work With Fedora Core 32 on Surface Pro
So, finally, this is where we get the touchscreen working. As I mentioned at the very beginning, on Fedora Core on the Surface Pro 4, you have the choice of either the pen or finger touches working but NOT BOTH. You’ll need to decide which you want ahead of time. From speaking with the Linux-Surface developers I believe this is because Intel have changed the way the Linux kernel must interact with the touchscreen driver and at the moment it’s not been reworked to enable both at the same time.
I believe the Linux Surface kernel team are working on it but my understanding is that it’s a significant piece of work and there’s no time-scale for completion yet. And it’s been about 20 years (hmm, 25?) since I did any Linux kernel programming so I’m a bit out of the loop there and can’t really offer any help.
Anyway – to get it working, follow the instructions at https://github.com/linux-surface/linux-surface/wiki/Installation-and-Setup
For the part of the installation that talks about the Intel Microcode – you don’t need it. It comes with Fedora by default. So that’s easy too 🙂
If you’re going to use Inkscape you’ll find the pen even understands the different pressures you can put on it to draw thicker lines if you push harder. Result!
The Surface Pro 4 runs Fedora Core 32 very well indeed. If you can live without the camera (which I can) I find it’s a lot faster than Windows 10. It uses significantly less RAM. With these tweaks it does everything I need it to. I’m sure there’s a whole raft of things I could have spoken about in this article. But if you’re struggling with something on your Surface Pro 4 running Fedora Core 32 then please drop me a line in the comments section below and I’ll do my best to help.
And in case you’re wondering – this article was written using Firefox with Fedora Core 32 on Surface Pro 4… The screenshot to the right shows you 🙂