4

I bought a broken Zoom H4n audio recorder, expecting an easy repair. What I got is a little bit over my head. It isn't booting (beyond a certain point) and I can't enter the firmware update tool. I think the firmware update has been interrupted.

Card setting right now

So I have hooked up its flash chip (EN29LV160B) to an Arduino and now I can read the contents. I was hoping to actually see some familiar features in the firmware file and in memory, so that I could align them and just write missing bytes manually. But of course it isn't that easy. In fact I don't even know if I have set up and am reading all the lsb ... msb in the right order.

In the firmware.bin file using a hex editor I am occasionally finding things like:

...M.I.X.E.R. .E.N.A.B.L.E.....O.F.F. . . . . ...O.N. . . . . . ...O.F.F. .
. . . ...+.4.8.V. . . . ...+.2.4.V. . . . ...O.F.F. . . . . ...C.O.M.P.1. .
. ...C.O.M.P.2. . . ...C.O.M.P.3. . . ...L.I.M.I.T.1. . ...L.I.M.I.T.2. . .
...L.I.M.I.T.3. . ...O.F.F. . . . . . . . . . . . . ...C.O.M.P.1.
(.G.E.N.E.R.A.L.). . ...C.O.M.P.2.(.V.O.C.A.L.)` 

But, not in my chip data.

In my Arduino program I have tried many possible bit inversions and rearrangements, and this yielded the best result (as in few unknown, tab and newline symbols)

void loop() {
  char reading = 0;

  if (address == 2097152)
    while(1)
      delay(1);

   if (address%16==0){
    Serial.println();
    Serial.print(address);
    Serial.print(" ");
   }

  for (uint8_t i = 0; i < 21; i++)
    digitalWrite(adress[i], bitRead(address, i));

  for (uint8_t i = 0; i < 8; i++)
    bitWrite(reading,i,!digitalRead(inputs[7-i]));

  Serial.print(reading);
  Serial.print(" ");

  address++;
}

But the output still has no human-recognizable contents.

Anything else I could try?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.