There was an extra MacBook Pro 11.5 lurking around so I decided to install Ubuntu 18.04 on it and try to setup a usable workstation.
A culmination of several issues prompted me to not pursue this setup further. Linux drivers and MacBook hardware just don’t play along very well.
Display flickering/corruption on main display
The bottom part of the HiDPI screen is experiencing some kind of flickering as tracked by this bug. Changing desktop environment, distros and X server configuration did not result in any improvements. For a moment Wayland seemed to have solved the issue only to reappear on next boot.
Since I also connected 3 external monitors this was not a deal breaker. External monitors did not display this issue.
Fan going at 100% most of the time
Even at idle or low load the fans would spin at 100%. Thermald was not doing it’s job for whatever reason. It is hard to say why since most temperature sensors seem to be working fine and report acceptable temperatures.
I found a simple but great project called mbpfan which stopped the fans immediately after being started and still kept temperatures seemingly in check. I increased the minimum fan speed in mbpfan config just to avoid any potential overheating problems. With this setup I was getting 70-80 degrees with no overheating problems and a quiet fan.
CPU is in constant low frequency state (dealbreaker)
After installing cpufreq gnome extension I figured out that CPU is always at 800MHz. Mbpfan was not the cause since the same lack of scaling appeared when it was turned off.
First I tried to disable Intel p_state driver but the lack of scaling continued. Using userspace driver in cpufreq, I was unable to change min/max frequencies or force a specific frequency via cpupower.
As per ArchWiki, I gifured out that BIOS was enforcing this state via
After ignoring ppc via
echo 1 > /sys/module/processor/parameters/ignore_ppc
the CPU instantly started to scale as expected. Unfortunately this was not the final solution since the low state would randomly reappear again for long periods of time with small time windows of scaling working as expected. Therefore, even with ignore_ppc I would still get 800MHz most of the time with temps reported around 70 degrees.
In this state Gnome Shell would lag and everything was half-usable.
Something in hardware was throttling CPU and I wasn’t able to overcome it.
Bcmwl driver very spotty
WiFi bcmwl driver is very spotty. It would connect to Android hotspot no problem but it failed to connect to WiFi router. Small sample of 50% reliability.
Display positions not remembered after reboot
I had to rearrange the external monitors on each reboot since Gnome would not remember their positions. I had to come up with xrandr script to run after login to remedy this sad state of affairs.
No per-monitor scaling
Gnome still does not support setting the scale factors per monitor. Again, I had to come up with xrandr script to achieve 200% scaling on HiDPI and regular scaling on external monitors (1900×1200).
Broken scaling under Wayland
Apparently if you set the scale factor to default in Wayland session, things should “just work” across HiDPI and non-HiDPI displays. Don’t believe these people, they are liars.
I set the scaling to default but that made HiDPI desktop tiny while external monitors were fine. Increasing the scaling to 200% made HiDPI fine while external monitors scaled also.
There is also no xrandr under Wayland so you can’t help yourself with that.
Broken rendering of electron apps on external monitors
If using Postman on an external monitor, parts of the dialog boxes would simply disappear, making the tool unusable. Using Postman on main display did not have this issue. Weird.
The bottom line: get a Dell or a Lenovo for your Linux workstation needs.