So, playing around with Workstation 12 on Ubuntu 16.04 and I found when booting a freshly installed copy of Windows 10 Pro, I’d get an alert that 3D acceleration was not working.
I thought this was Odd as it was enabled, and I’d previously checked I had 3d support configured in Linux.
Checking the test tool for unity, I again confirmed 3D Acceleration was working:
spathi@Loki:~$ /usr/lib/nux/unity_support_test -p
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
OpenGL version string: 3.0 Mesa 11.2.0
Not software rendered: yes
Not blacklisted: yes
GLX fbconfig: yes
GLX texture from pixmap: yes
GL npot or rect textures: yes
GL vertex program: yes
GL fragment program: yes
GL vertex buffer object: yes
GL framebuffer object: yes
GL version is 1.4+: yes
Unity 3D supported: yes
The answer to this was to edit my vmware preferences file and add a string to allow Blacklisted drivers. Now, I am not sure why this is required when it can be seen above that the Intel drivers are not blacklisted, but hey, that requires some more research.
So I fired up vim and edited the preferences file in my home directory :
And in my case the missing flat wasn’t present at all, so I added the following at the end of the file.
mks.gl.allowBlacklistedDrivers = "TRUE"
I restarted Workstation, low and behold I was no longer receiving errors about 3D acceleration not working.
So after switching to Ubuntu on my Surface Pro 3 it occurred to be I would like to virtualise my Windows 10 instance in VMware workstation 12.
Unfortunately before blasting my windows partition away I didn’t grab my Windows Serial Key that is embedded in the UEFI/BIOS.
If I was installing Windows 8/10 directly on the device I’d have no need for the key, as Microsoft check the hardware layer and activate automatically. Unfortunately as this instance of Windows 10 is in a VM, the required hardware layer is not exposed.
I noted there were some windows tools available to grab the embedded serial key, but as I have no windows running on the bare metal, I searched for and found a solution using linux.
Running the following command should spit out the key. I’ve done this on Ubuntu 16.04
It should look like:
MSDM key: XXXXX-XXXXX-XXXXX-XXXXX
If for some reason this command doesn’t work, you can also try this one:
sudo xxd /sys/firmware/acpi/tables/MSDM
And you will get an output as follows:
00000000: 4d53 444d 5500 0000 0309 4f45 4d43 0000 MSDMU.....OEMC..
00000010: 4f20 4520 4d20 4300 0003 0000 414d 4920 O E M C.....AMI
00000020: 1300 0100 0100 0000 0000 0000 0100 0000 ................
00000030: 0000 0000 1d00 0000 4434 5143 4e2d 5039 ........XXXX-XX
00000040: 4647 342d 3842 524b 572d 5858 4734 582d XXX-XXXXX-XXXXX-
00000050: 3643 4d38 52 XXXXX
The last set of X’s will be the serial key.
Use this to activate Windows 8/10
I’ve taken the plunge and moved from Windows on my Surface Pro 3 to Ubuntu, and while the migration wasn’t so bad it can be challenging to find software that does what you need on Linux when you are used to Windows/Mac OS X.
Here’s some replacement programs with instructions to install.
Note I have also included programs that do exists on Linux (some to my surprise)
Replacement: Keepass! this was an easy one.
Install via apt-get:
sudo apt-get install keepass2
Replacement: Steam! This is also available for Linux
Replacement: Spotify! This also exists for linux
VMware Workstation Pro
Replacement: VMware Workstation Pro! This also exists for Linux. You could also use Virtual Box which is free if you’d prefer.
After using Ubuntu 16.04 LTS for a few weeks on my Surface Pro 3 I’m quite impressed. Heres what I did to get it working. I’ve gone for a single boot, Ubuntu only install, however I used a dual boot method while testing.
I now have Ubuntu on the Surface Pro 3 (i7 256 GB model) working including the keyboard cover w/ trackpad, the surface pro 3 dock and the Arc SE Bluetooth mouse. The Surface Pro 3 dock is also working.
- If you have a dock keep it undocked to begin with.
- Also, I had secure boot turned off the first time around, as I had not realised Microsoft had signed the first stage bootloader for Ubuntu. You can leave this enabled
Heres what I did:
- Created a Ubuntu Boot disk (micro sd card) from Windows
- Resized the surface SSD using disk management tool in Windows to free up some space
- Shutdown, entered into the Surface UEFI and set the boot mode to USB -> SSD
- Booted this and installed Ubuntu, let it install grub if you want dual boot.
- Once installed, connect to the network.
- Now add this PPA to your repository to install the surface kernel extras. I’ve also run through the standard upgrade process just to ensure everything is up to date.
sudo add-apt-repository ppa:tigerite/kernel
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install linux-surface
sudo apt-get dist-upgrade
- If you have a dock, shutdown and dock the machine, otherwise perform a reboot
- Power on or wait for the reboot to finish
- You should now find the keyboard case w/ trackpad is working.
- If you have a dock you should now have ethernet and your secondary display working.
- To get the Bluetooth Arc SE Mouse working you will need to do the following
- Edit /lib/udev/rules.d/50-bluetooth-hci-auto-poweron.rules and comment out the only non-commented line
- Uncomment lines [Policy] and AutoEnable=true (originaly there is =false, change it) in /etc/bluetooth/main.conf
- Perform the pairing now. After pairing successfully I still had no cursor movement, I repaired and then turned bluetooth off and on from the menu bar which got it working.
Things to note:
- The shortcut buttons on the keyboard case aren’t working, I believe I had this setup on the first install so I will post an update when I have resolved this
I’ll update this section as I find more issues.
References & thanks:
Create an Ubuntu Bootdisk on Windows
Microsoft Bluetooth ARC Mouse SE fix
Please leave comments and suggestions below. I’d love to hear from others using their Surface Pro 3 with Linux and any improvements you’ve found/made.
If you’ve tried to unzip a bunch of zip files via the unix command line using a Linux distro or Mac OS X using the following command you may have come across the following.
displays the error:
caution: filename not matched
The easiest way of fixing this is by adding ‘single quotes’ to the file portion of the command, for example:
Which will unzip all of the zip files in the current directory.
Mac OS X users: you can access the unix terminal by running Terminal, an application found in Applications -> Utilities.