The original 'brick-fix tool' and 'enhanced mtd hack' has proven pretty useful for those with R0 cameras that had been bricked by doing a firmware update.
It's been even more useful to deal with the fallout from the 'Hikvision backdoor' disclosure where so many people are finding their cameras are being messed with from the internet, mischievously or maliciously, and need to update to safer firmware.
However - the rather techy original method to make the changes, and probably my not-very-clear instructions have been a challenge for some people.
* And I only just noticed this - my original .txt attachments were in Linux format, not Windows format, making them hard to read without proper line breaks. And no-one let me know! Dohh! *
So here is 'Brick-fix tool V2' aimed at making the process less complex, a bit automated and easier to use, with the following changes:
- After Brick-fix toolV2 has been installed using the Hikvision tftp updater, following the power cycle to activate and drop the payload, the camera will boot directly into 'min-system' mode with telnet and tftp access and a 'fixup' script ready and primed for use.
- No web GUI access or Windows shares are needed to move files in and out of the camera.
- The fixup script handles all the basics of extracting the original mtdblock6, importing and applying the user-modified mtdblock6 that has had the 'enhanced mtd hack', and initiating a firmware update.
- The Brick-fix toolV2 automatically writes a valid template into mtdblock1 that stops cameras that originally had firmware 5.2.0 or 5.2.8 from otherwise going into a bricked state when newer firmware is applied.
- Attached to this post are the resources required to convert your R0 / DS-2CD2x32 cameras into full English upgradeable devices.
- The brick-fix tool V2 in both EN and CN header language versions (brick_fixv2.zip).
- A required resource list and step-by-step guide to the fixup script.
- A description of how to do the 'enhanced mtd hack' with screenshot with a list of devType codes for those cameras that have the masqueraded values.
- A sample transcript of the fixup script going through all 3 stages - extract mtdblocks, import modded mtdblock6, apply firmware update.
edit 15Dec17 By popular request, a video worked example using a DS-2CD3332-I camera donated by a generous forum member.
edit 28Jan18 devType codes updated - thanks @hikcamuser
Resource List
Step By Step Guide:
- The Hikvision tftp updater tool and usage instructions, courtesy of @whoslooking - tftpserv
- A standard tftp server - tftpd32.452.zip at bottom of this thread.
- A telnet client. PuTTY is pretty good and widely used - Download: 64-Bit | 32-Bit
- The HxD hex editor - Downloads | mh-nexus
- Firmware files for R0 IP cameras - R0 series DS-2CD2x32x-Ixx IP camera firmware
- Hikvision's really useful SADP tool. This will find your Hikvision device on the LAN whatever it's IP address, allow 'activation', and change of IP address. - SADP Tool
Here are the steps to take when using the brick-fixV2 tool to recover a bricked camera, and running the fixup script to change the camera to English / upgradeable. The camera doesn't have to be bricked to run the brick-fix tool if all that's required is a helping hand doing the 'enhanced mtd hack'.
How To Upgrade
- Create a folder on the local drive of your Windows PC to hold the Hikvision tftp updater, the chosen tftp server program (e.g. jouinin.net version), the unzipped 'brick-fixV2' files, and the Hikvision firmware to use for updating. The HxD hex editor should be installed on the PC.
- With the PC and the camera each on a wired connection (not WiFi) set the PC IP address to 192.0.0.128, subnet mask to 255.255.255.0 The default gateway does not matter.
- Make a copy of brickfixV2EN and name it as digicap.dav If the EN version does not work, e.g. "System update completed" is not displayed in step 5 or you don't get the login prompt when trying to telnet in step 8, try the CN version.
- Start the Hikvision tftp updater tftpserve.exe and if a Windows firewall popup appears, click OK to accept what the program needs.
- Power on the camera and observe the status messages in the tftp updater. Hopefully you will see 'System update completed' after 2 or 3 minutes.
- Close the Hikvision tftp updater, delete the digicap.dev file from step 3 and make a copy of the Hikvision firmware to use for updating and name it digicap.dav.
- Power down the camera. At this point the brickfixV2 tool has been installed but not yet activated. Power on the camera to activate the tool, it will then drop the payload, fix up mtdblock1 and reboot into min-system mode for telnet access.
- Using PuTTY, start a telnet session to 192.0.0.64 and make sure the telnet radio button is selected. At the login prompt username=root password=12345. You should see a # prompt. The message "can't chdir to home directory '/root/'" isn't an error and can be ignored.
- Start the normal tftp server (not the Hikvision tftp updater). If it's the jouinin.net version, the program is tftpd32.exe
At this point, Stage 1 of 3 is ready to be executed.
At the telnet command prompt, type:
/dav/fixup.sh
and watch the on-screen messages.
- On success with Stage 1, check the PC folder that the tftp server is running in for the presence of the file 'mtd6ro_orig'. You may have to hit F5 to refresh. Make a copy of mtd6ro_orig rename to mtd6ro_mod. Do the 'enhanced mtd hack' on it, using the instructions in the spoiler below.
These are the steps that are used to do the 'enhanced mtd hack' to mtdblock6 in an R0 IP camera.
[*]
- Extract a copy of mtdblock6 from the camera. The 'Brick-fixV2 tool / fixup script' will conveniently do this for you, or it could be done manually by other methods.
- Make a copy of the mtdblock6 file and name it mtd6ro_mod
- Open it with the HxD hex editor.
- Referring to this image
View attachment 24161- Check / change as needed the language byte at location 0x10 to ensure it is 01
- Check the devType value in locations 0x64 and 0x65
If the value shown is FF98 - then the FF value needs to be replaced with the true numeric value. Ideally the true value is determined from the 'devType' line from the prtHardInfo shell command, but as that is going to be unavailable on a bricked camera use this (partial) cross-reference list, paying careful attention to the exact model number.
There is some slight uncertainty here - it would be good if any forum members could confirm / supplement the content.
devType - Model
2698 - DS-2CD2032F-I
2698 - DS-2CD2032F-IW
0598 - DS-2CD2032-I
0698 - DS-2CD2132-I
1E98 - DS-2CD2132F-IS
1E98 - DS-2CD2132F-IWS
0798 - DS-2CD2232-I5
0898 - DS-2CD2332-I
1298 - DS-2CD2432F-IW
1498 - DS-2CD2532F-IS
1098 - DS-2CD2632F-IS
0E98 - DS-2CD2732F-IS
0698 - DS-2CD3132-I
1C23 - DS-2DE2103-DE3/W
2198 - DS-2CD2T32-I8
[*]
- Replace the FF in location 0x64 with the first 2 digits of the numeric devType value.
- If location 0x64 already has a 2-digit numeric value, no change is needed.
- Starting at location 0x09, drag to select and highlight a length of F4 bytes, as shown he the HxD bottom status bar.
Using the Analysis / Checksum menu, double-click Checksum-16 to calculate the new checksum. This will show as a 2 byte value in the Checksums tab at the bottom of the screen. These need to be applied using the correct 'endian-ness', which is the reverse of how the values are presented on the screen.
The left hand byte (0x0C in the screenshot) is the most significant byte and should be used in location 0x05
The right hand byte (0x5F in the screenshot) is the least significant byte and should be used in location 0x04
Use your own just-calculated values - not those from the screenshot.
Click File | Save and the mtd6ro_mod file has had the 'enhanced mtd hack' and is ready to be applied to the camera.
This is done during Stage 2 of the fixup script in the brick-fixV2 tool.
Good luck!
At this point, Stage 2 of 3 is ready to be executed.
At the telnet command prompt, type:
/dav/fixup.sh
and watch the on-screen messages.
This will bring in the modified mtd6ro_mod and apply it to the camera to convert it to English / upgradeable.
At this point, Stage 3 of 3 is ready to be executed.
At the telnet command prompt, type:
/dav/fixup.sh
and watch the on-screen messages.
This will attempt a firmware update using the Hikvision firmware file digicap.dav that you placed in the same folder as the tftp server.- Assuming a successful result, shut down the tftp server and power cycle the camera. Interestingly, on testing I did find that a straight jump to the 5.4.5 firmware version worked OK. YMMV. But worth trying.
- Start SADP and check for the camera presence running the firmware version used for the update.
- If you used the 5.4.5 firmware, the camera will require 'activation' with your choice of strong password.
If already active, if earlier firmware was used for the upgrade, log in with the admin password=12345
Change the IP address to what you want the camera to use.
- Rename the firmware to digicap.dav
- Put the firmware under the same folder of this TFTP
- Set the IP of computer as 192.0.0.128
- Camera's IP can be anyone.
- Run the tftpserv.exe
- Power off and power on the DVR/DVS/IPC. The device will search the new firmware and upgrade it automatically.
- Please wait until TFTP shows "Device [192.0.0.64] system update completed!" It takes about 5 minutes.
- Close the TFTP before the camera reboots.
- DVR/DVS/IPC will restart automatically after upgrading.
Thankyou! Worked like a beauty...
I have a bunch of DS-2CD6412FWD-20 that got unresponsive after upgrading from a 5.1.x firmware to 5.4.x version. Saw the warning in the firmware description to late... So they've been lying around since.
So now all are saved and working perfect again.
Happy New 2022!
/Thomas