Firmware upgrade using Linux tool, requires no hardware

Adjusting BENQ Blur Reduction and DyAc (Dynamic Acceleration) including Blur Busters Strobe Utility. Supports most BenQ/Zowie Z-Series monitors (XL2411, XL2420, XL2720, XL2735, XL2540, XL2546)
Falkentyne
Posts: 2795
Joined: 26 Mar 2014, 07:23

Re: Firmware upgrade using Linux tool, requires no hardware

Post by Falkentyne » 22 Apr 2015, 14:29

The benq doesn't need a driver.
You're reading the i2c address directly.
When you find the correct i2c address, you will get a text string with XL2420Z in it (around the middle).

i2c is basically the exact same protocol that DDC uses.

The reason we use Linux to flash the firmware is because Linux is like MS DOS (for those that remember that), or rather, older versions of windows. You can directly access hardware with low level drivers. Windows needs signed certified drivers (whatever they're called....)

What bus numbers did you test?
What ranges?
If you try bus 0, 1, 2, 3 and 4 you get XXXXX?
What about bus 6, 7, 8?

What about i2c address 0x49 and bus 0, 1, 2, 3, and 4?

I remember it took me some time to find my Benq but that was before I knew bus 0 was valid.
My laptop monitor was on bus 1, at address 0x50.

Sglord
Posts: 7
Joined: 22 Apr 2015, 11:23

Re: Firmware upgrade using Linux tool, requires no hardware

Post by Sglord » 22 Apr 2015, 21:10

still cant :(
only see my dell monitor ...

Code: Select all

ubuntu@ubuntu:~$ sudo i2cdump -r 0-127 5 0x50
No size specified (using byte-data access)
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-5, address 0x50, mode byte
Probe range limited to 0x00-0x7f.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 ff ff ff ff ff ff 00 10 ac 58 d0 54 5a 4d 30    ........??X?TZM0
10: 2c 18 01 03 80 33 1d 78 ea e2 95 a2 55 4f 9f 26    ,????3?x????UO?&
20: 11 50 54 a5 4b 00 71 4f 81 80 d1 c0 01 01 01 01    ?PT?K.qO????????
30: 01 01 01 01 01 01 02 3a 80 18 71 38 2d 40 58 2c    ???????:??q8-@X,
40: 45 00 fd 1e 11 00 00 1e 00 00 00 ff 00 4d 44 43    E.???..?.....MDC
50: 4b 32 34 41 54 30 4d 5a 54 0a 00 00 00 fc 00 44    K24AT0MZT?...?.D
60: 45 4c 4c 20 53 32 33 34 30 4c 0a 20 00 00 00 fd    ELL S2340L? ...?
70: 00 38 4c 1e 53 11 00 0a 20 20 20 20 20 20 01 12    .8L?S?.?      ??
EDIT
GREAT ! use windos os to update driver so that e system can detect benq instead of unknown
use dvi to dvi, i finally manage to see my benq at bus 4

Code: Select all

ubuntu@ubuntu:~$ sudo i2cdump -r 0-127 4 0x50
No size specified (using byte-data access)
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-4, address 0x50, mode byte
Probe range limited to 0x00-0x7f.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 ff ff ff ff ff ff 00 09 d1 2d 7f 45 54 00 00    ........??-?ET..
10: 10 18 01 03 80 35 1e 78 2e 9d e1 a6 54 54 9f 26    ?????5?x.???TT?&
20: 0d 50 54 a5 6b 80 d1 c0 45 7c 61 7c 81 80 81 bc    ?PT?k???E|a|????
30: 95 3c 31 7c 01 01 02 3a 80 18 71 38 2d 40 58 2c    ?<1|???:??q8-@X,
40: 45 00 13 2a 21 00 00 1e 00 00 00 ff 00 39 34 45    E.?*!..?.....94E
50: 30 30 30 37 30 53 4c 30 0a 20 00 00 00 fd 00 38    00070SL0? ...?.8
60: 90 1e a0 21 00 0a 20 20 20 20 20 20 00 00 00 fc    ???!.?      ...?
70: 00 42 65 6e 51 20 58 4c 32 34 32 30 5a 0a 01 f2    .BenQ XL2420Z???
Flashing was fast.
Finally :D
Image

Falkentyne
Posts: 2795
Joined: 26 Mar 2014, 07:23

Re: Firmware upgrade using Linux tool, requires no hardware

Post by Falkentyne » 24 Apr 2015, 07:28

Glad it worked for you, but what exactly is "Windos"?

Do you mean windows 7/8 ?
And why did you have to 'update' the driver? Can you explain this please? Did you boot to Ubuntu from bios? Ubuntu doesn't have access to windows drivers....

Sglord
Posts: 7
Joined: 22 Apr 2015, 11:23

Re: Firmware upgrade using Linux tool, requires no hardware

Post by Sglord » 24 Apr 2015, 10:41

yea. i mean windows 8.1

i know it doesnt make any sense but no idea why it works anyway
ubuntu display setting only show unknown and dell monitor, so guess that the monitor gt ignore when scanning ?
i decide to give it a try since i couldnt identify my benq monitor bus
went over to windows os and download benq driver and update it

go back to ubuntu and under display it change to benq and dell
so try i2c dump every bus it could detect (bus0-5) and miracle manage to identify e benq monitor under bus 4 by using dvi

Falkentyne
Posts: 2795
Joined: 26 Mar 2014, 07:23

Re: Firmware upgrade using Linux tool, requires no hardware

Post by Falkentyne » 24 Apr 2015, 11:18

Sglord,
Did you run Ubuntu as a virtual OS or a "shell" within windows 8.1? (windows 8.1 was running in the background?)

Or did you actualy boot into Ubuntu by restarting the computer and booting into a USB flash drive with Ubuntu?
Because what we did was boot to a USB bootable flash drive so Ubuntu was the standalone operating system)

And I did this on my laptop, not my desktop, so the laptop never had a benq INF/driver installed. (I booted to Ubuntu by booting from the bootable flash drive).

Sglord
Posts: 7
Joined: 22 Apr 2015, 11:23

Re: Firmware upgrade using Linux tool, requires no hardware

Post by Sglord » 24 Apr 2015, 11:40

i boot ubuntu using usb - "try ubuntu mode"

i tink once u install inf/driver for ur monitor will permanent stuck to it?
as i use usb ubuntu also can detect it as benq instead of unknown.
my desktop also detect it as benq xl2420z instead of pnp monitor even though i didnt install it on my pc. i did on my sis pc only

r80x
Posts: 10
Joined: 28 Apr 2015, 14:16

Re: Firmware upgrade using Linux tool, requires no hardware

Post by r80x » 28 Apr 2015, 14:35

Hi i just wanted to thank everyone for att the comment and all the help i got by reading here.

I've successfully flashed my firmware to v4 but not without some hickups

My first flash resulted in bricking my device. Totally dead, no screen, no buttons no nothing.
I panicked and thought that i screwed up. I tried to re-flash but it didnt work.
This was yesterday through a really old laptop.

I tried to connect it through my built in CPU graphics but it didnt show up there either.
I then tried to unplug the monitor for ten minutes and interestingly enough it now showed up on the VGA bus.

I tried to dumb the firmware and it resulted in writing error and the screen not being detected. Unplug for ten more minutes.
Plug-in, showed up on the bus. Flashed the firmware without dumping the old (bricked) one and it worked.
My XL2720Z is now updated to v4 and is working perfect!

Some notes to all who want to try this:

1. Dont use a old laptop. Use your regular computer and preferably the build in GPU. After reading comment it should probably work just as well with most regular PCI-E cards too.

2.The first code is outdated and now points to a newer version that doesn't work.

Code: Select all

 svn co svn://flashrom.org/flashrom/trunk flashrom
You have to add @1846 after trunk to get the right version.

Code: Select all

svn co svn://flashrom.org/flashrom/trunk@1846 flashrom
If the display get bricked, dont panic and if you cant find it on the bus anymore just unplug it for ten minutes the try again and skip the code for dumping the old firmware.

It's really easy but read around a bit before you try it so that you know what to do if it goes wrong.

I think you should update the first post for all beginners and people who want to try this!


Thank you pipomolo42 and everyone alse who contributed to this thread!

Falkentyne
Posts: 2795
Joined: 26 Mar 2014, 07:23

Re: Firmware upgrade using Linux tool, requires no hardware

Post by Falkentyne » 28 Apr 2015, 14:51

Glad it worked.
Bricking is usually recoverable (as mentioned in the thread) by unplugging and using a different device.
Btw modern laptops are fine. Any laptop with an i5 or newer CPU (sandy bridge era or newer) and a VGA port will usually ALWAYS work.
The only problem with using the 'master' computer is the issue of sometimes the benq not being detected (showing up as an unknown device) unless you install the benq driver through WINDOWS, even though you are using a Ubuntu flash drive and are not even booting into windows. This problem doesn't happen if you boot to a modern laptop with the Benq connected through a VGA port.

Someone bricked his screen by flashing the "RAR compressed" firmware and renaming it as a bin and not extracting the bin file first. Perhaps your trick would work for them too.

The Benq has a 'boot block' where some of the master hardware information is write protected, so usually you can recover.

I wrote an updated guide on flashing and mentioned the trunk command.
I'll copy and paste what I wrote here.
I wrote this for whitestar, who was able to dump his version 4 xl2411z firmware for us. (his shipped with v4).
-----------------------------------

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:
"http://www.pendrivelinux.com/universal- ... -as-1-2-3/"

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:

"deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse"
Save and exit the sources.list file.

Then type "sudo apt-get update"
That should download some updates.
Then type:
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.

"http://boeglin.org/blog/index.php?entry ... -free(dom)"

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 flashrom"
"cd flashrom"
wget -O- "http://boeglin.org/static/benq/0001-Add ... ocol.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 ... -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 insteada of 1 0x50, or 5 0x50). Once you find the dump that says "XL2411Z/XL2420Z/XL2430T/XL2720Z" etc, then you're good to go.

(edit):
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_V4.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_V4.BIN or XL2720Z_V4.bin (as I suggested above).

(What this did was, it created a DUMMY empty 2 MB file called firmware.bin.
Then it MERGED the V2 (for this example only, in your case it will be the V4 file) with the 2 MB dummy file, a new 2 MB V4 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).
Last edited by Falkentyne on 17 Sep 2016, 12:55, edited 6 times in total.

urut
Posts: 111
Joined: 08 Aug 2014, 13:15

Re: Firmware upgrade using Linux tool, requires no hardware

Post by urut » 01 May 2015, 06:37

I don't know what im doing wrong. But i find "XL2411Z" at 0:50 bus, and at LAST COMMAND from your post Falkentyne, i've got:

Code: Select all

ubuntu@ubuntu:~/flashrom$ sudo ./flashrom -p mstarddc_spi:dev=/dev/i2c:0:50 -c "MX25L1605A/MX25L1606E" -r backup.bin
flashrom v0.9.7-r1846 on Linux 3.16.0-30-generic (i686)
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
Info: Will try to use device /dev/i2c and address 0x00.
Info: WILL reset the device at the end.
Error opening /dev/i2c: No such file.
Please check you specified the correct device.
Error: Programmer initialization failed.
What im doing wrong? :/

Falkentyne
Posts: 2795
Joined: 26 Mar 2014, 07:23

Re: Firmware upgrade using Linux tool, requires no hardware

Post by Falkentyne » 01 May 2015, 06:41

You put a : instead of a -
Simple typo.
Rather easy to make typos like that because of it being such a long line.
I had a few of them myself, but being paranoid, I caught them before pressing enter.

Post Reply