Ah, indeed.
The good old "[Unknown] error UpgradeCheck.cpp 190 tid:1034 Language not compare!" error. :')
I guess I did not patch that, I have updated the firmware in the OP.
A simple change if any of you are interested:
Log in to telnet on the camera, run: "killall sonia"
Run "sonia" right afterwards so "sonia" - the main application - will run in your terminal where you can study the output.
Now upload the firmware, you'll get the error from the post above me, look through the sonia log, you see this:
Using IDA we can search for the string "Language not compare!" and find following code very quickly:
Compare register R0 with literal value 0.
Branch (Jump) on "ne" - if comparison was successful to location...
Change the branch from BNE
to B (always branch):
and voila! (I sure hope dahua isn't reading this - inb4 next release all debug strings erased from FW)
I have also permanently enabled dh_keyboard = 0 so you will always have a serial shell on UART in case of a disaster.
Though
I recommend logging in to telnet and running "dh_keyboard 0" before flashing a new firmware. So you don't end up like the guy on page 4 :v
Telnet is also enabled by default on my FW.
After this change I was able to flash the official english FW, however if you want to go back to "chinese" FW (my modded one for example) you'll have to change the chinese check.img or hwid file to identify itself as an english firmware. I can make an image that does this. Right now my firmware identifies itself as chinese so you can flash it on chinese cameras.
And looks like the english one does not wanna run on my camera: "[Manager] fatal tid:1001 Src/Locales.cpp:687 Language Not Compare!!Going to exit!"
Guess I need to reset the settings? Probably the guy on page 4 bricked his like this lol.
You probably should not flash the english firmware.
Edit: Definitely don't flash the english firmware, sonia does not start not even "upgraded" works.