These instructions still work. If you have problems with errors after it actually starts flashing, you will need to either change to a different port (VGA or DVI) or use a different computer. There is some risk with the DVI EDID getting corrupted after a fully successful flashing on boards with UEFI bioses, and that is just a guess because every issue I've seen with the EDID has been with people using UEFI, so that is just a guess. If your DVI EDID does get corrupted after a successful flash, you can either get a working EDID from someone with the Linux EDID-RW tool (which is hard to use), or reflash the monitor with the Mstar ISP device (which is 100% guaranteed to work) or the RT809F flasher (which also will work).
First grab a USB flash drive. 8 GB+ works best, though I did use an empty 2 GB one.
Get the ISO for Linux (Ubuntu) http://releases.ubuntu.com/14.04/
I used the i386 one for my core i7.
Download the easy to use USB installer here:
Install it then boot to the flash drive and run the try Ubuntu mode.
When it finishes loading, open a terminal (Ctrl + Alt + T);
type "sudo gedit /etc/apt/sources.list" without the quotes to bring up the editor.
At the end of the second line, add "Universe Multiverse" so the line looks exactly iike this:
trusty main restricted universe multiverse"
Save and exit the sources.list file.
Then type "sudo apt-get update"
That should download some updates.
sudo apt-get install i2c-tools subversion libpci-dev
That should update and install some package lists.
You MIGHT also need this command too.
sudo apt-get install libusb-dev
If everything installs correctly, great.
But now things get tricky.
Using the instructions on this website, you need to find and backup the V4 firmware. The hard part is actually finding the i2c bus where it's located.
Type these commands: Remove any quotes I put, though, including the quotes in the wget command (trying to bypass link creation).
"svn co svn://flashrom.org/flashrom/trunk@1846
wget -O- "http://boeglin.org/static/benq/0001-Add-programmer-for-the-MSTAR-I2C-ISP-protocol.patch | patch -p1" (<---the | is the shifted \ key, aka the "Pipe" symbol). On this website, that link shows up truncated with "...." unless you mouse over it. The full link without truncation is on the main site: "http://boeglin.org/blog/index.php?entry=Flashing-a-BenQ-Z-series-for-free(dom)"
Remove the quote before http and after -p1.
make -j (<-this should make the flashrom patcher with the data for the mstar scaler)
sudo modprobe i2c-dev
sudo i2cdetect -l <--this lists all i2c buses
sudo i2cdetect 1 <---this lists al i2c buses on bus 1.
sudo i2cdump -r 0-127 1 0x50 <--- get EDID (0x50) from bus 1. You are looking for an EDID dump that shows the monitor name in it. You may have to change the 1 to a 0, if your monitor is on bus 0, or to a higher value, seen up to 5 on 290x DVI ports, or more ( 0 0x50 instead of 1 0x50, or 5 0x50). Once you find the dump that says "XL2411Z/XL2420Z/XL2430T/XL2720Z" etc, then you're good to go.
If you are using a laptop through VGA, you SHOULD be able to find the monitor i2c identifier name easily. If you are using a desktop through DVI and flashing through the desktop and you can not find the monitor bus or get random data where the monitor 'should' be located (or in the rare case that the laptop can't see it through VGA, reboot the host computer back to windows and install the monitor driver from the DVD (device manager or displays in control panel); this has been confirmed to have helped people who kept getting "Unknown" data on the i2c bus. (0x50 buses 0-4 usually). Not sure why this works; maybe Linux has access to installed inf data.
sudo ./flashrom -p mstarddc_spi:dev=/dev/i2c-1:49 <----# identify flash chip, on bus 1 (/dev/i2c-1) at address 0x49. Change the 1 to a 0 if you are on bus 0. Change the 1 to a 5 if you re on bus 5, and so on.
(dump current firmware)
sudo ./flashrom -p mstarddc_spi:dev=/dev/i2c-1:49 -c "MX25L1605A/MX25L1606E" -r backup.bin <--again change the 1 to a 0 if you are on bus 0.
This should take about 5 minutes to dump. Once that's done, copy backup.bin to a folder on the local hard drive (NOT the USB drive) so you can can upload it somewhere. The dumped file should be 2 mb in size. We can easily verify if you dumped the right thing by a hex editor.
(Funny enough I forgot the actual flash command for flashing the firmware itself; the above is for finding the Benq and backing up the current firmware).
Copy the EXTRACTED Version 4 firmware into the flashrom folder. If you renamed it in windows (I suggest this), copy the renamed file. I suggest renaming XL2411Z's V4 (if you downloaded whitestar's backup.bin dump) to XL2411Z_V4.BIN, XL2420Z to XL2420Z_V4.BIN and the XL2720Z file to XL2720Z_V5.BIN
DO NOT RENAME IT TO FIRMWARE.BIN !!!!!
# extend firmware to 2MB, to match the flash chip size
(this step is important; the flash chip is 2 MB, but the raw firmware is 800k'ish. In order to flash with this flashrom patcher (the MSTAR ISP unit does not have this limitation), the other 1.2 MB must be filled with "empty/dummy" bytes to make the file 2 MB in total size. This is a limitation of flashrom itself).
tr '\000' '\377' < /dev/zero | dd of=firmware.bin bs=1k count=2k
dd if=XL2411Z_V2_20131209_8B72.BIN of=firmware.bin conv=notrunc (# < important !--REPLACE XL2411Z_V2_20131209_8B72.BIN with your firmware you are flashing!! Example: XL2411Z_V4.BIN or XL2420Z_V5.BIN or XL2720Z_V5.bin (as I suggested above).
(What this did was, it created a DUMMY empty 2 MB file called firmware.bin.
Then it MERGED the raw 830k file you downloaded (for this example only, in your case it will be the V5 file or v4, etc) with the 2 MB dummy file, a new 2 MB V5 file, that will be called firmware.bin
# write firmware
sudo ./flashrom -p mstarddc_spi:dev=/dev/i2c-1:49 -c "MX25L1605A/MX25L1606E" -w firmware.bin
(this will take between 5-20 minutes).