Re: Firmware upgrade using Linux tool, requires no hardware
Posted: 06 Feb 2018, 15:05
First of all: A big thank you to everyone contributing to this thread. I successfully flashed V4 on my BenQ XL2420z.
I always had a BenQ XL2420z with the first firmware version. Back in the day BenQ agreed to flash V2 for me if I send the monitor to their HQ. When it came back it had V2 installed but the OSD/Menu was unreadable. So they retook it and gave me back one with V1. I gave up on V2 after this.
Fast forward today and I somehow stumbled across Blur Busters again and read about the DIY Linux method. Searched for a VGA cable, took out my trusted Lenovo X300 and went to town. Followed everything in the guide until this occured:
The monitor wouldn't turn on again. I was a bit distraught and tried to connect the monitor via VGA to my onboard-gpu and tried to flash again. Same result over and over.
At last I connected the monitor with my usual DVI cable and tried again. This time the bus changed from '1' to '11'. And it worked
Complete log for the interested:
i2c-15 i2c card0-DP-5 I2C adapter
i2c-3 i2c i915 gmbus dpc I2C adapter
i2c-13 i2c Radeon i2c bit bus 0x97 I2C adapter
i2c-1 i2c i915 gmbus vga I2C adapter
i2c-11 i2c Radeon i2c bit bus 0x95 I2C adapter
i2c-8 i2c Radeon i2c bit bus 0x92 I2C adapter
i2c-18 i2c DPDDC-D I2C adapter
i2c-6 i2c Radeon i2c bit bus 0x90 I2C adapter
i2c-16 i2c DPDDC-B I2C adapter
i2c-4 i2c i915 gmbus dpb I2C adapter
i2c-14 i2c card0-DP-4 I2C adapter
i2c-2 i2c i915 gmbus panel I2C adapter
i2c-12 i2c Radeon i2c bit bus 0x96 I2C adapter
i2c-0 i2c i915 gmbus ssc I2C adapter
i2c-9 i2c Radeon i2c bit bus 0x93 I2C adapter
i2c-10 i2c Radeon i2c bit bus 0x94 I2C adapter
i2c-7 i2c Radeon i2c bit bus 0x91 I2C adapter
i2c-17 i2c DPDDC-C I2C adapter
i2c-5 i2c i915 gmbus dpd I2C adapter[/code]
I found the right bus by cycling through the list
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-11.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- 49 -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- 59 -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
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-11, address 0x50, mode byte
Probe range limited to 0x00-0x7f.
Continue? [Y/n]
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: 2b 17 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 30 30 30 E.?*!..?.....000
50: 30 30 30 30 30 53 4c 30 0a 20 00 00 00 fd 00 38 00000SL0? ...?.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 01 .BenQ XL2420Z???
flashrom v0.9.7-r1846 on Linux 4.10.0-28-generic (x86_64)
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-11 and address 0x49.
Info: WILL reset the device at the end.
Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on mstarddc_spi.
Found Macronix flash chip "MX25L1605A/MX25L1606E" (2048 kB, SPI) on mstarddc_spi.
Found Macronix flash chip "MX25L1605D/MX25L1608D/MX25L1673E" (2048 kB, SPI) on mstarddc_spi.
Multiple flash chip definitions match the detected chip(s): "MX25L1605", "MX25L1605A/MX25L1606E", "MX25L1605D/MX25L1608D/MX25L1673E"
Please specify which chip definition to use with the -c <chipname> option.
flashrom v0.9.7-r1846 on Linux 4.10.0-28-generic (x86_64)
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-11 and address 0x49.
Info: WILL reset the device at the end.
Found Macronix flash chip "MX25L1605A/MX25L1606E" (2048 kB, SPI) on mstarddc_spi.
Reading flash... done.
2048+0 records in
2048+0 records out
2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.00701821 s, 299 MB/s
1664+0 records in
1664+0 records out
851968 bytes (852 kB, 832 KiB) copied, 0.0051151 s, 167 MB/s
flashrom v0.9.7-r1846 on Linux 4.10.0-28-generic (x86_64)
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-11 and address 0x49.
Info: WILL reset the device at the end.
Found Macronix flash chip "MX25L1605A/MX25L1606E" (2048 kB, SPI) on mstarddc_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
Now I need to read into all the small and big tricks I can do
What a rollercoaster. Thank you!
I always had a BenQ XL2420z with the first firmware version. Back in the day BenQ agreed to flash V2 for me if I send the monitor to their HQ. When it came back it had V2 installed but the OSD/Menu was unreadable. So they retook it and gave me back one with V1. I gave up on V2 after this.
Fast forward today and I somehow stumbled across Blur Busters again and read about the DIY Linux method. Searched for a VGA cable, took out my trusted Lenovo X300 and went to town. Followed everything in the guide until this occured:
Code: Select all
flashrom v0.9.7-r1846 on Linux 4.4.0-31-generic (x86_64)
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-1 and address 0x49.
Info: WILL reset the device at the end.
Found Macronix flash chip "MX25L1605A/MX25L1606E" (2048 kB, SPI) on mstarddc_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Error sending write command: errno 6.
spi_nbyte_program failed during command execution at address 0x0
Reading current flash chip contents...
At last I connected the monitor with my usual DVI cable and tried again. This time the bus changed from '1' to '11'. And it worked
Complete log for the interested:
Code: Select all
ubuntu@ubuntu:~/flashrom$ sudo modprobe i2c-dev
Code: Select all
ubuntu@ubuntu:~/flashrom$ sudo i2cdetect -l
i2c-3 i2c i915 gmbus dpc I2C adapter
i2c-13 i2c Radeon i2c bit bus 0x97 I2C adapter
i2c-1 i2c i915 gmbus vga I2C adapter
i2c-11 i2c Radeon i2c bit bus 0x95 I2C adapter
i2c-8 i2c Radeon i2c bit bus 0x92 I2C adapter
i2c-18 i2c DPDDC-D I2C adapter
i2c-6 i2c Radeon i2c bit bus 0x90 I2C adapter
i2c-16 i2c DPDDC-B I2C adapter
i2c-4 i2c i915 gmbus dpb I2C adapter
i2c-14 i2c card0-DP-4 I2C adapter
i2c-2 i2c i915 gmbus panel I2C adapter
i2c-12 i2c Radeon i2c bit bus 0x96 I2C adapter
i2c-0 i2c i915 gmbus ssc I2C adapter
i2c-9 i2c Radeon i2c bit bus 0x93 I2C adapter
i2c-10 i2c Radeon i2c bit bus 0x94 I2C adapter
i2c-7 i2c Radeon i2c bit bus 0x91 I2C adapter
i2c-17 i2c DPDDC-C I2C adapter
i2c-5 i2c i915 gmbus dpd I2C adapter[/code]
I found the right bus by cycling through the list
Code: Select all
ubuntu@ubuntu:~/flashrom$ sudo i2cdetect 11
I will probe file /dev/i2c-11.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- 49 -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- 59 -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Code: Select all
ubuntu@ubuntu:~/flashrom$ sudo i2cdump -r 0-127 11 0x50
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-11, address 0x50, mode byte
Probe range limited to 0x00-0x7f.
Continue? [Y/n]
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: 2b 17 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 30 30 30 E.?*!..?.....000
50: 30 30 30 30 30 53 4c 30 0a 20 00 00 00 fd 00 38 00000SL0? ...?.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 01 .BenQ XL2420Z???
Code: Select all
ubuntu@ubuntu:~/flashrom$ sudo ./flashrom -p mstarddc_spi:dev=/dev/i2c-11:49
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-11 and address 0x49.
Info: WILL reset the device at the end.
Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on mstarddc_spi.
Found Macronix flash chip "MX25L1605A/MX25L1606E" (2048 kB, SPI) on mstarddc_spi.
Found Macronix flash chip "MX25L1605D/MX25L1608D/MX25L1673E" (2048 kB, SPI) on mstarddc_spi.
Multiple flash chip definitions match the detected chip(s): "MX25L1605", "MX25L1605A/MX25L1606E", "MX25L1605D/MX25L1608D/MX25L1673E"
Please specify which chip definition to use with the -c <chipname> option.
Code: Select all
ubuntu@ubuntu:~/flashrom$ sudo ./flashrom -p mstarddc_spi:dev=/dev/i2c-11:49 -c "MX25L1605A/MX25L1606E" -r backup.bin
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-11 and address 0x49.
Info: WILL reset the device at the end.
Found Macronix flash chip "MX25L1605A/MX25L1606E" (2048 kB, SPI) on mstarddc_spi.
Reading flash... done.
Code: Select all
ubuntu@ubuntu:~/flashrom$ tr '\000' '\377' < /dev/zero | dd of=firmware.bin bs=1k count=2k
2048+0 records out
2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.00701821 s, 299 MB/s
Code: Select all
ubuntu@ubuntu:~/flashrom$ dd if=XL2420Z_V04.BIN of=firmware.bin conv=notrunc
1664+0 records out
851968 bytes (852 kB, 832 KiB) copied, 0.0051151 s, 167 MB/s
Code: Select all
ubuntu@ubuntu:~/flashrom$ sudo ./flashrom -p mstarddc_spi:dev=/dev/i2c-11:49 -c "MX25L1605A/MX25L1606E" -w firmware.bin
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-11 and address 0x49.
Info: WILL reset the device at the end.
Found Macronix flash chip "MX25L1605A/MX25L1606E" (2048 kB, SPI) on mstarddc_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
Now I need to read into all the small and big tricks I can do
What a rollercoaster. Thank you!