Flash wr841nd with arduino directly

Hi everyone. I have decided to play a little with my old router and accidentally bricked it) Completely. Bootloader is broken too. I have teardown the router and get access to uart on it.

Tftp and all other standard ways (like serial console) does not working. I tried)

The only way i am see is to directly flash router ROM via programmer, but since i have no one i decide to use arduino as a programmer. I have installed ftdi to it (this arduino have 16u2 chip, but i cant get it work with flashrom and u2 build from here. For command flashrom -p serprog:dev=/dev/ttyACM0:115200 (i am using Linux) the output is:

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Error: cannot synchronize protocol - check communications and reset device?
Error: Programmer initialization failed.

Arduino have no conneted wires except usb one.)

With ftdi it work but only a half (no wires connected, also arduino chip frequency defined as #define F_CPU 12000000UL in main.h of frser-duino to down-volte):

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
serprog: Programmer name is "frser-duino"
serprog: requested mapping AT45CS1282 is incompatible: 0x1080000 bytes at 0x00000000fef80000.
serprog: requested mapping GD25Q256D is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping IS25LP256 is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping IS25WP256 is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping MX25L25635F/MX25L25645G is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping MX25U25635F is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping MX25U51245G is incompatible: 0x4000000 bytes at 0x00000000fc000000.
serprog: requested mapping MX66L51235F/MX25L51245G is incompatible: 0x4000000 bytes at 0x00000000fc000000.
serprog: requested mapping N25Q00A..1G is incompatible: 0x8000000 bytes at 0x00000000f8000000.
serprog: requested mapping N25Q00A..3G is incompatible: 0x8000000 bytes at 0x00000000f8000000.
serprog: requested mapping N25Q256..1E is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping N25Q256..3E is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping N25Q512..1G is incompatible: 0x4000000 bytes at 0x00000000fc000000.
serprog: requested mapping N25Q512..3G is incompatible: 0x4000000 bytes at 0x00000000fc000000.
serprog: requested mapping MT25QL01G is incompatible: 0x8000000 bytes at 0x00000000f8000000.
serprog: requested mapping MT25QU01G is incompatible: 0x8000000 bytes at 0x00000000f8000000.
serprog: requested mapping MT25QL02G is incompatible: 0x10000000 bytes at 0x00000000f0000000.
serprog: requested mapping MT25QU02G is incompatible: 0x10000000 bytes at 0x00000000f0000000.
serprog: requested mapping MT25QL256 is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping MT25QU256 is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping MT25QL512 is incompatible: 0x4000000 bytes at 0x00000000fc000000.
serprog: requested mapping MT25QU512 is incompatible: 0x4000000 bytes at 0x00000000fc000000.
serprog: requested mapping S25FL256S......0 is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping S25FL512S is incompatible: 0x4000000 bytes at 0x00000000fc000000.
serprog: requested mapping W25Q256.V is incompatible: 0x2000000 bytes at 0x00000000fe000000.
serprog: requested mapping W25Q256JV_M is incompatible: 0x2000000 bytes at 0x00000000fe000000.
No EEPROM/flash device found.
Note: flashrom can never write if the flash chip isn't found automatically.

But when i connect wires in next way:

Router   ----   Arduino
VCC      --->   5v (arduino is down volted to work with 3.3v via low chip frequency)
GND      --->   GND
RX       --->   TX
TX       --->   RX

I getting error message:

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Error: cannot synchronize protocol - check communications and reset device?
Error: Programmer initialization failed.

When connecting tx, rx wires vise-versa i have output as when no wires connected.

Connecting rx, tx to 11 and 12 pins (and vise-versa) of arduino (and not touching other wires) result in output as when no wires connected.

Without down-volting 16u2 u2 build works well, but still does not recognizes ROM of router

Also, as i figured out, my router has W25Q32FV serial flash chip. Is it supported by flashrom?

How should i connect wires to get things done?

Thanks in advance)

1 Like