(Update December 2022: As suggested in the latest comments, this entire blog post is pretty much redundant now! Linux Mint 21.1 installs without a hitch, even using Cinnamon, and I have fully-functional brightness and sound keys straight out of the box.)
(Update December 2020: I successfully upgraded from Linux Mint 19.3 to Linux Mint 20 by following the official Linux Mint instructions. The only additional post-upgrade work I had to do was re-adding the Section "Device"
bit to /usr/share/X11/xorg.conf.d/nvidia-drm-outputclass-ubuntu.conf
as described below to get the brightness keys working again.)
(Update May 2020: I’ve re-run through this whole process using Linux Mint 19.3 and have updated this blog post with new details. Notably, no need to install pommed
, and including the specific voodoo needed for the 2010 MacBook Air from Ask Ubuntu regarding PCI-E bus identifiers.)
We have a still perfectly usable Late-2010 MacBook Air (“MacBookAir3,2”, model number A1369), but with macOS 10.14 Mojave dropping support for Macs older than 2012 (it’s possible to extremely-hackily install it on older machines but I’d rather not go down that route), I decided I’d try installing Linux on it. The MacBook Air still works fine, if a bit slow, on macOS 10.13 but I felt like a bit of nerding!
Installation
My distribution of choice was Linux Mint, which is Ubuntu-based but less with the constant changes that Canonical keep making. The first hurdle right out of the gate was which “edition” to choose: Cinnamon, MATE, or xfce. There was zero info on the website about which to choose, I started with Cinnamon but that kept crashing when booting from the installation ISO and giving me a message about being in fallback mode. It turns out Cinnamon is the one with all the graphical bells and whistles, and it appears that an eight-year ultralight laptop’s video card isn’t up to snuff, so I ended up on “MATE” edition, which looks pretty much identical but works fine.
My installation method was using Raspberry Pi Imager to write the installation ISO to a spare SD card (despite the name, it can be used to write any ISO: scroll all the way down in the “Choose OS” dialog and select “Use custom”). Installing Linux requires you to partition the SSD using Disk Utility, I added a 2GB partition for the /boot
partition, and another 100GB to install Linux itself onto. It doesn’t matter which format you choose as it’ll be reformatted as part of the installation process.
After partitioning, reboot with the SD card in and the Option key held down, and choose the “EFI Boot” option. The installer is quite straightforward, but I chose the custom option when it asked how to format the drive, formatted both the 2GB and 100GB partitions as ext4, with the 2GB one mounted at /boot
and the 100GB at /
. The other part is to install the bootloader onto that /boot
partition, to make it easy to get rid of everything if you want to go back to single-partition macOS and no Linux.
Post-install
The next hurdle was video card drivers. Mint comes with an open-source video card driver called “Nouveau” which works but isn’t very performant, and there was lots of screen tearing as I’d scroll or move windows around. This being Linux, it was naturally not as simple as just installing the official Nvidia one and being done with, because that resulted in a black screen at boot. 😛 I did a massive amount of searching and eventually stumbled across this answer on AskUbuntu which worked where nothing else did: I followed those instructions and was able to successfully install the official Nvidia drivers without getting a black screen on boot!
(Update May 2020: I honestly don’t remember whether I had to go through Step 1 of Andreas’ instructions, “Install Ubuntu in UEFI mode with the Nvidia drivers”, but check for the existence of the directory /sys/firmware
before running the rest of this. That directory is only created if you’ve booted in EFI mode. If it doesn’t exist, follow the link in Step 1).
I’m copying the details here for posterity, in case something happens to that answer, but all credit goes to Andreas there. These details are specifically for the Late 2010 MacBook Air with a GeForce 320M video card, so using this on something else might very well break things.
Create the file /etc/grub.d/01_enable_vga.conf
and paste the following contents into it:
cat << EOF
setpci -s "00:17.0" 3e.b=8
setpci -s "02:00.0" 04.b=7
EOF
Then make the new file executable and update the grub config files:
$ sudo chmod 755 /etc/grub.d/01_enable_vga.conf
$ sudo update-grub
And then restart. Double-check that the register values have been set to 8 for the bridge device and 7 for the display device:
$ sudo setpci -s "00:17.0" 3e.b
08
$ sudo setpci -s "02:00.0" 04.b
07
Next, load up the “Driver Manager” control panel and set the machine to use the Nvidia drivers, once it’s finished doing its thing — which took a couple of minutes — restart once more, and you’ll be running with the much-more-performant Nvidia drivers!
At this point I realised that the brightness keys on the keyboard didn’t work. Cue a whole bunch more searching, with fix being to add the following snippet to the bottom of /usr/share/X11/xorg.conf.d/nvidia-drm-outputclass-ubuntu.conf
:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 320M"
Option "RegistryDwords" "EnableBrightnessControl=1"
EndSection
And now I have a fully-functioning Linux installation, with working sleep+wake, audio, wifi, and brightness!
I’m certainly not going to be switching to it full-time, and it feels like a lot more fragile than macOS, but it’s fun to muck around with a new operating system. And with 1Password X, I’m able to use 1Password within Firefox under Linux too!
Great! just what I needed to revive this old laptop.
Yay! Glad it was helpful! 😀
Awesome tutorial, but I can’t seem to get the brightness working. I’ve pasted the stuff in /usr/share/X11/xorg.conf.d/nvidia-drm-outputclass-ubuntu.conf, but doesn’t do anything.
Hm, odd… this is definitely a 2010 13″ MacBook Air with the Nvidia 320M graphics card? I just ran through the whole process again from scratch starting with an erase-install of Mint 19.1 and it worked fine, and was even slightly better than my original post because there’s no need for `pommed` anymore, all the media function keys worked first time. 🙂
It’s actually a Macbook Pro “13 mid-2010, but with same videocard.
I tried disabling the Nvidia logo, that worked fine, so it reads the config just fine.
The rest of the of your explaination works just fantastic, except the brightness.
(I also installed macfanctld to make the Macbook a bit cooler).
Ahh, gotcha. Well, glad the parts of it that worked helped at least. 😀 Let me know if you discover a solution, I’m curious now, given it’s the same video card!
I actually hoped you could assist me ^_^
Maybe the device ID is not 0, but like 1?
I’m gonna play with it again in about 2 hours.
I’m not going to lie, I don’t actually know the innards of _why_ that snippet works, just that I pasted it in and it worked. 😅
Alright, thanks anyway <3
I'm gonna switch back to macOS, because it's much better optimised than anything else.
No worries! This whole process was just for fun and something new rather than any sort of switching over to Linux full-time anyway. 🙂
You can use the lspci command to find the device ID.
Just a heads up, you have a typo. The snippet you’ve provided for us to follow for double checking the register values says
$ sudo setpci -s “04:00.0” 04.b
when it should say
$ sudo setpci -s “02:00.0” 04.b
Thank you for this handy guide — it has been quite literally a life saver for my little macbook air.
Ah crap, good catch! I checked the original post on AskUbuntu and it’s the other way around, the register should be set to `04:00.0` in the original `01_enable_vga.conf` script instead, whereas I typoed it to `02:00.0`. Post has been updated.
Great to hear it was helpful, cheers! 😀
Awesome! I’ll make sure it’s that way on mine – not that I understand everything that it’s doing haha – your tutorial is definitely easy to follow!
I just came across one little issue — while I didn’t have to adjust the brightness feature at all (that worked from the get-go), my battery icon has a big question mark in it. Not sure if that’s bc my batter is bad, or because I need to make linux recognize it as something it can use? Doing some searching but would appreciate your input!
Hmm, my immediate guess would be that the battery’s probably totally kaput. I’ve got a couple of VERY old Macs that exhibit the same behaviour. I guess the easiest way to confirm would be to just boot into macOS. 🙂
Oh I just realized that on my mac, it’s originally 02:00.0 anyway! I don’t have a 04:00.0 ID. lol.
You got me doubting myself so I went back and fired up the Air to check, and you were right the first time! It should have been 02:00.0, post updated again. 😅
Used to be running Lubuntu on my old Macbook air 2010, for a little over year. Just changed to mint because Lubuntu got frustrating got and even without the drivers (going to try these now) the speed and stability improvement is brilliant. Brings a lease of new life to this lovely old machine. Loving the nice graphical features that just make life that little easier 🙂
Haha yeah. I’d originally tried Ubuntu prior to writing this post and kept running into situations where I’d think “Wait, how the hell do I get to {thing}?!” because I couldn’t figure out the UI.
I just installed linux mint cinnamon 21 on my macbook air 3.2 (late 2010). Everything is working out of the box (video, wifi). No patch required for nvidia video card. I just want to share this great info with everybody. Thanks for your initial post. My Macbook is like brand new, Best distro for this 11 years laptop.
I was looking for chrome os flex too but this macbook air 3.2 is not supported. Linux Mint Cinnamon 21 is the way to go.
Nice, that’s great to hear, thanks for the info!
Actually, it’s interesting that you mention Cinnamon, I didn’t have much success with that originally which is why I used MATE in the original blog post. How’s the performance? Not sluggish?
Really smooth cinnamon. I will update to 21.1 this weekend. 😀
Haha awesome, might have to revisit this post over the holidays and see how it goes, I reckon!
Upgrade to 21.1 was really smooth. I forgot to tell a have the 4mo ram version oh the macbook air 3.2 (late 2010). If i remember there was a 2mo Ram version of this macbook air.
Have fun and merry christmas
Yeah, mine’s the 4GB one as well. 🙂 Merry Christmas to you too!
I’m assuming it is with the Nouveau graphics instead of the Nvidia graphics- does it get hot?
You are right Mike :
Graphics:
Device-1: NVIDIA MCP89 [GeForce 320M] vendor: Apple driver: nouveau v: kernel ports:
active: eDP-1 empty: DP-1 bus-ID: 02:00.0 chip-ID: 10de:08a3
Device-2: Apple FaceTime Camera type: USB driver: uvcvideo bus-ID: 1-6:4 chip-ID: 05ac:850a
Display: x11 server: X.Org v: 1.21.1.3 driver: X: loaded: modesetting unloaded: fbdev,vesa
gpu: nouveau display-ID: :0 screens: 1
Screen-1: 0 s-res: 1440×900 s-dpi: 96
Monitor-1: eDP-1 model: Apple Color LCD res: 1440×900 dpi: 126 diag: 341mm (13.4″)
OpenGL: renderer: NVAF v: 3.3 Mesa 22.0.5 direct render: Yes
Not to hot except when viewing youtube videos.
Have fun
Bob
I reply to myself. If you want to force Nvidia driver there is a wiki here: https://forums.linuxmint.com/viewtopic.php?p=2211278#p2211278
The problem is the old nvidia card in this macbook air 2010 is not supported anymore by nvidia. The workaround for old driver is a good trick. I don’t know if i will try because my macbook is soo stable. 😉 Please inform us if you try it.
Bye
Bob
I have installed Linux Mint Cinnamon 21.2 on my MacBook Air MC504LLA (Late 2010). As you may know, it is equipped with an NVIDIA GeForce 320M graphics card. Everything was working fine until I updated my Mint. After the reboot, the system booted to a black screen. I don’t know what to do. Please help me.
I’m afraid I can’t really give much advice, sorry! Troubleshooting Linux boot issues is well beyond my area of expertise. 😅
You’d probably need to start by getting into recovery mode, to make sure the thing actually boots at all.
The reason for this is the kernel update that is among the many updates that come after the original installation. See this discussion here:
https://forums.linuxmint.com/viewtopic.php?t=408597
Ooh interesting, thanks for sharing!
Does your installer FaceTime camera work?
Mine does not with the latest LM Cinnamon install.
…y’know, I didn’t actually even think to check the webcam at any point!
Thanks for your reply. It would be interesting to know if anybody with Mint in whatever version got everything to work on a MacBook Air 13″ late 2010. I can confirm this info for my MBAir:
Operating System: Linux Mint 21.3
Kernel: Linux 5.15.0-91-generic
Architecture: x86-64
Hardware Model: MacBookAir3,2
Builtin camera:
Device-2: Apple FaceTime Camera type: USB driver: N/A bus-ID: 3-6:7
chip-ID: 05ac:850a
What throws me off a bit is that the USB driver is listed as N/A.
I just dusted off the old 2010 MacBook Air and it’s on Mint 21.1, I installed Cheese and it worked perfectly first time.
I then installed all the software upgrades that were in Synaptic and rebooted, and it’s still on 21.1. 🤔 But the webcam still works fine…
Thanks for your reply. Maybe I do a fresh install and try Mint 21.1.
I’m trying to do this on a 2010 Mac Mini, it shares the same graphics card and I’ve changed the PCI buses to the corresponding ones but I can’t seem to make it work. When I run sudo setpci -s it doesn’t show the previously set values