Samsung laptop firmware update check from Linux

1st December 2012 (12 years ago)

Update 2013-06-01: I now have a script that makes it easy to check for BIOS updates: samsung-bios-check.

The way Samsung would have you check for BIOS/firmware updates is to download a Windows .exe and run it. There is nowhere on their site I can find out about firware release versions.

For someone who doesn't keep Windows installed or rarely boots into it, this is inconvenient.

I was able to intercept the request that the Windows application makes and have a URL that anyone can use to find out if there are updates available. You can access this from a browser or curl.

http://sbuservice.samsungmobile.com/BUWebServiceProc.asmx/GetContents?platformID=ABC&PartNumber=AAAA

Before you use it, you will need to set your own platformID parameter - written above as ABC. You can find this by going to the bios setup screen when your computer first boots (usually by pressing F2). On the first screen shown you should see a row labelled BIOS Version and then the version number which looks something like P01ABC. Take the last three characters from this version string and this is your platformID. Take note of the full version code as you will need to compare it with the version the Samsung website.

When you hit the URL with your own platformID you should get back some XML with a line looking something like <Version>P02ABC</Version>. If the number characters here are larger than the number you saw in your BIOS screen (e.g. in this case P02 is greater than P01) then you have an update available.

This technique has personally been used to check updates for a Samsung Series 9 Ultrabook - NP900X3C.

For anyone interested in how to intercept HTTP calls made by applications like the Samsung BIOS updater I recommend mitmproxy. I had this running on a separate Linux machine, then setup the machine running Windows to use this as a proxy server. Mitmproxy makes inspecting these web requests very easy to do and has a friendlier interface than Wireshark if you are only concerned with web calls.