Running Fedora Asahi Linux on an M1 MacBook Pro 16

In August 2024, my Asus Strix G15 laptop conked out after almost three years of heavy usage. I have an extended warranty, so I called Asus, and they said they’d send a technician to diagnose and fix the laptop. I knew this would take at least three to four weeks, so I brushed off the dust from the office M1 MacBook Pro and started using it.

Having used i3 on Linux for the last 7 years, I found the MacOSX user interface difficult to navigate. I longed for the customization and predictability that i3 offered. I had heard of the Asahi Linux project and was eager to try it, and this was a good opportunity to do so.

Initial setup

Ensure that you are familiar with the device support matrix. Everything I needed for my daily work was supported. While I would have liked Thunderbolt and Touch ID support, it’s not a deal breaker. I also recommend going through the FAQ.

The initial setup is straightforward. As mentioned on the Asahi Linux website, open a terminal on MacOSX and run the script: curl https://alx.sh | sh

Afterwards, be sure to follow the instructions carefully. Pay close attention to the instructions at the end of the installation, or you could end up in a boot loop like I did.

The experience

Honestly, the experience is quite good. Asahi Linux is based on Fedora and runs KDE Plasma 6. I found it to be stable, smooth and configurable. The speaker, Wi-Fi, Bluetooth, display brightness, camera, mic and the external display via HDMI all worked as expected.

Installed applications

As a web developer, I was able to get everything that I needed up and running.

  • PHPStorm – My IDE of choice. JetBrains provides a build for Linux ARM64.
  • Joplin – For long-term notes & documentation, supports syncing across devices. Installed via Flatpak.
  • Anytype – Daily notes and task tracking. It does not have a Linux ARM64 build, but I was able to create a build easily. See this GitHub thread for more details.
  • Flameshot – To take screenshots and annotate them. Installed via the package manager.
  • Yakuake – Drop-down, quick access terminal. Installed via the package manager.
  • Ferdium – Allows access to Telegram, Whatsapp and other services via a single app. Installed via Flatpak.
  • QEMU, KVM, libvirt – To set up a development environment while keeping the host machine clean. I followed the guide here to set up the virtual machine and this guide to set up folder sharing with the host OS via virtio-fs.
    • XDebug with PHPStorm also works with the above setup. If you are having issues use XDebug log and use telnet to check the connection to the host machine. Some useful debugging notes can be found on this StackOverflow thread.
  • Nextcloud desktop – To sync files between devices and for long-term storage. Installed via the package manager.
  • KeepassXC – Password manager, synced via Nextcloud. Installed via the package manager.
  • Dbeaver CE – Database management tool. Installed via Flatpak.
  • Meld – Visual diff and merge tool. Installed via Flatpak.
  • Chromium – Web browser – For web development and debugging. Installed via the Discover app.
  • Firefox – Web browser – For personal use. Installed via the Discover app.
  • htop – Interactive process manager. Installed via the package manager.
  • ncdu – Disk utility. Installed via the package manager.
  • VSCodium – Coding with some less-used programming languages like Rust, Vue.js etc. Installed via the Discover app.
  • VLC – For media playing needs. Installed via the Discover app.
  • GIMP – For image editing. Pre-installed with the distribution.
  • VPN – I use a VPN service occasionally that supports WireGuard. I was able to add a WireGuard VPN connection by importing the configuration file to the network manager that comes with KDE. Quite simple.

Getting Netflix / Spotify to work

This is a well-known issue due to Widevine DRM not being installed by default. A script is provided to install it in the Asahi Linux GitHub repositories. Run widevine-installer on the command line to start the setup.

This blog has more details on this topic. See the “Netflix specific annoyances” section to set the proper user agent for your browser when accessing Netflix.

What could be better?

Per device workspace

I use dual monitors. I had i3 tiling window manager installed on my Asus Laptop. This makes managing windows across workspaces and desktops quite easy. For example, I can have my IDE open on a specific specific workspace, which is then pinned to a specific display. So whenever I want to access my IDE, I know where it is, and I can use the workspace shortcut to shift focus.

Although workspaces/virtual desktops are supported by KDE Plasma, they span across displays. You cannot have display specific workspace. This is obviously more of a KDE Plasma issue rather than an Asahi Linux issue, but it’s worth mentioning.

Live streaming Formula 1 (F1TV)

I tend to watch Formula 1 races from time to time, and I’ve not had any luck getting the F1 stream to work on Asahi Linux. I get the following error message even with Widevine installed. This should be fixable, but I need to spend more time debugging this.

Replaying non-live content on F1TV works fine.

Setting up MediaWiki via mwcli, docker

I use mwcli to set up a MediaWiki wiki family in order to work on the ContentTranslation tool and I’ve been facing some issues getting it to work. I believe it’s because of the arm64 architecture. Again another item needs some more debugging.

$ mw docker mediawiki create
[+] Running 6/6
✔ Container mwcli-mwdd-default-mediawiki-web-1                                                                                                                 Started                                        1.3s  
✔ Container mwcli-mwdd-default-nginx-proxy-1                                                                                                                   Started                                        1.2s  
✔ Container mwcli-mwdd-default-mediawiki-1                                                                                                                     Started                                        1.0s  
! mediawiki-web The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested                                                0.0s  
! mediawiki The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested                                                    0.0s  
✔ Container mwcli-mwdd-default-dps-1

Battery life

During active development with virtual machines running, a few calls, and an external keyboard and mouse attached, my laptop running Asahi Linux lasts about 5 hours before the battery drops to 10%. Under the same usage, macOS lasts a little more than 6.5 hours. Asahi Linux reports my battery health at 94%.

For comparison, my Asus laptop lasts under 3 hours under similar conditions.

Next steps

After I fix some of the issues mentioned above, I’d like to run a tiling window manager on the MacBook M1 Pro. i3 only supports the X Window manager whereas Asahi Linux comes with Wayland so it would not be possible to use that. Sway is a drop-in replacement for i3 built to run on Wayland that I should be able to use.

My existing i3 configuration should work as is, but it is something that I need to try out. With KDE, I appreciated the fact that a lot of things like sleep, suspend, power modes, WiFi, Bluetooth, dark mode, notifications etc just worked out of the box. When setting up Debian on my Asus laptop from scratch, I had to configure everything myself, but it still felt less cohesive.

Asus replaced my laptop’s motherboard under warranty, and since mid-September 2024, I’ve gone back to running Debian Testing with i3 and KDE Plasma 5. This setup is nicer and I’m happier with it compared to my previous setup. I want the same setup on the M1 Pro with KDE Plasma 6.

Despite some minor issues, I found Asahi Linux fully usable as a daily driver. The M1 MacBook has great hardware, and it’s exciting to see it running Linux — and running it well. It’s a testament to the effort put in by the Asahi Linux team.

Driving from Bhubaneswar, Odisha to Yuksom, Sikkim on Tata Nexon EV Max

Towards the end of April 2024, I drove my Nexon EV Max from Mahura, Bhubaneswar, Odisha to Kalimpong, West Bengal, about 1100 km. The passengers were my dog and me, and a lot of luggage, including camping gear. I’d say the weight of the passengers and luggage in the car was about 135 kilos. This is a trip report sharing my overall experience driving an electric vehicle over a long distance and hilly roads.

The purpose? To escape the sweltering heat of Bhubaneswar, and ride the summers out in the hills of West Bengal and Sikkim. I’m fortunate to have a remote job that allows me this flexibility.

Continue reading

Hike around Jhumka dam and reservoir

The Jhumka dam and reservoir are located in the Chandaka forest in Khorda district, Odisha. During the rainy season, it’s impossible to hike on the bank of the reservoir, but the rest of the year, the water level subsides and one can have a nice walk along the shore of the lake. The reservoir is a short drive for me and I usually go there with my dog, Bongo, once a month for a hike.

Every time I have been to Jhumka reservoir for a hike, we walk on the grassier side of the lake for about a couple of kilometers and then turn back. The other side of the lake is covered by a thick forest with uneven terrain extending to the shore of the lake. On multiple occasions, the thought of hiking around the entire lake has popped into my head but pushed it away due to not being adequately prepared or there not being enough time before nightfall.

Continue reading

Drive to Koraput on Tata Nexon EV Max

Koraput is a town in southern Odisha surrounded by mountains, waterfalls, and forests. We travelled to Koraput from Bhubaneswar on my Tata Nexon EV Max (2022), which has a 40.5 kWh battery that can do around 300-330 km on a single charge. The passengers included my wife, our pet dog and me. We also had a bunch of luggage, a tent and a portable 5kg gas stove for camping.

Doing long trips on an EV in India can be challenging, depending on where you start and your destination. I share this trip report with the hope that it helps others planning to visit this scenic town. The report will focus on our drive to Koraput and some well-known places rather than the places themselves. If you are interested in a summary, you can scroll down to the overall trip summary section.

We made this trip in Oct, 2023. The blog talks about the state of charging at that period of time. Please check the charging infrastructure on Plugshare or other apps when planning your trip.

Continue reading

Contributing to Wikimedia software projects

Lately, I’ve received numerous emails from new open-source contributors requesting guidance in contributing to Wikimedia software projects. There are a lot of useful resources available, and this post is an effort to gather these resources in one place. Time to get your reading hats on.

Some background: I work as a software engineer in the Product department at the Wikimedia Foundation since 2019. The information / views shared on this blog are my own, and do not necessarily reflect the views of my employer.

Continue reading

Lekhan (लेखन) – A journaling system

At the end of the year, I enjoy looking back and reviewing memorable moments from that year. It gives me happiness, a sense of accomplishment and fulfilment. Unfortunately, I’ve not been doing a good job of tracking these events. I don’t take many photos or write reviews since I don’t know where to post them. I’m not very comfortable with storing all my data with Google or other big tech hence I plan to host / build something simple myself.

Continue reading