Obtaining Windows embedded serial key for Surface Pro 3 using Linux

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

sudo hexdump -s 56 -e '"MSDM key: " /29 "%s\n"' /sys/firmware/acpi/tables/MSDM

It should look like:


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



Surface Pro 3 on Ubuntu 16.04 LTS

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.

Before beginning:

  • 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
    • Reboot
    • 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

Tigerite PPA

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.