May 16, 2016

Upgrading Samsung M2026W printer firmware in Linux using Windows 10

Today I have successfully upgraded the Samsung M2026W printer to the latest firmware in Linux using Windows 10 in Virtual Machine.
If you wish to do the same, then you will need to install qemu-kvm package and download Windows 10.
I used Windows 10 Single Language (English, 64-bit).
My motherboard is P8Z68-V PRO/GEN3.

Requirements

  • 25GiB of free disk space
  • 4GiB of free RAM

Running Windows 10 in Virtual Machine

Once you downloaded the Windows 10 image, it is time to install it.
For that you will use the qemu-img command to create a virtual disk of 20GiB in size.
I have also used the preallocation parameter to get some decent I/O performance.

qemu-img create -f qcow2 -o preallocation=metadata ./win10.qcow2 20G

Now start the Windows 10 image with 2GiB RAM and give it one more slot so that it can grow up to 4GiB of RAM in case when it is needed.

qemu-system-x86_64 -enable-kvm -m 2G,slots=2,maxmem=4G -cdrom ~/Downloads/Win10_1511_1_SingleLang_English_x64.iso -hda ./win10.qcow2

After the Windows 10 is installed, shut it down and create a backing device from the qcow2 image.
The backing device is highly useful, since all the new changes will be written in that file and if you want to rollback, simply remove that file and create another one.

qemu-img create -b ./win10.qcow2 -f qcow2 ./win10-b.qcow2

Now connect your Samsung Printer with the USB cable to your computer.
You should be able to see the device:

# lsusb  |grep -i samsung
Bus 002 Device 008: ID 04e8:3321 Samsung Electronics Co., Ltd 

The most important part now is to specify -M q35 read more on q35, otherwise if you select Universal Serial Bus controllers -> USB Printing Support in the Device Manager, you will see the yellow triangle with the exclamation mark and clicking on the device tells you:

This device cannot start. (Code 10)
Insufficient system resources exist to complete the API.

So this would be a proper way of starting your virtual Windows 10 with the assigned Host USB device to it:

sudo qemu-system-x86_64 -enable-kvm -M q35 -m 2G,slots=2,maxmem=4G -hda ./win10-b.qcow2 -usb -usbdevice host:04e8:3321

In Windows 10, open up the Samsung M2026W support page and download the Samsung Printer Diagnostics software.
Run it and select Install your software, tick the [x] Samsung M2020 Series printer driver.

Open the Samsung Printer Diagnostics again and now go to Advanced options -> (x) Update Firmware
Follow the instructions and you will get the latest version of the firmware on your Samsung Printer.

Samsung Printer firmware