Problem with ADNS 9800 to get travel distance

I just had to change in the firmware
prog_uchar firmware_data[] PROGMEM =
To:
const char firmware_data[] PROGMEM =

Why did you change from unsigned char to signed char?

and a picture of how I cable the ADNS with arduino

There is something missing from your picture. Two things, actually.

First, the Arduino is conspicuously missing, so we can't tell which Arduino you have connected the device to.

Second, none of the 8 wires shown appear to actually be soldered to the board.