小米摄像机升级失败,小米摄像机黄灯常亮修复,全网最硬核修复

这篇具有很好参考价值的文章主要介绍了小米摄像机升级失败,小米摄像机黄灯常亮修复,全网最硬核修复。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

2020年买了个小米云台相机pro,后来搬家没怎么用,放家里吃灰一年多,前两天突然翻到想着拿来用一用,结果开机后提示要升级,我就点了升级,结果升级好重启后就一直没反应了,一直黄灯常亮。升级期间也没断电干啥的,结果就不能开机了。然后网上找方法说可以下载固件放到sd卡里重启就能恢复,结果试了下,几个小时过去了,也没能修好,于是打电话给小米客服,说可以寄过去帮忙修。东西寄过去两天后,售后来电话说试了不能用tf卡自动升级,要换主板,这个机器过了一年保修了,换主板要收80。然后我说这个主板硬件是好的,你能不能拆开来刷个固件修下,他说不行。听到这瞬间就来气了,主板肯定是好的,升级失败肯定是软件问题并不是硬件问题,我以我做软硬件工程师的经验来看,这绝对是软件的BootLoader有个bug,升级时写flash数据错误导致的。软件工程师的责任,出了问题居然要消费者来买单,这点责任都担不起,售后维修连个最基础的刷固件的方案都给不出,真的时失望至极,果断拒绝维修。不知道这个售后是真不会刷固件还是假的不会刷固件,还是说要以换主板的名义来收费,实际换主板的操作只是刷了个固件。收到相机后各种爬网找资料,找方法,看见遇到我这个问题的人不在少数,所以把我总结的方法分享给大家。

刷机方法

准备

  • linux系统的电脑,推荐使用ubuntu
  • 十字螺丝刀
  • 吹风机,或者热风枪
  • ch341a 编程器,没这个可以去淘宝买,几十块一个,如下图
    小米摄像机升级失败,小米摄像机黄灯常亮修复,全网最硬核修复

相机拆机

  1. 准备十字螺丝刀,热风枪
  2. 用吹风机把底部贴纸吹热,脚垫吹热,
  3. 趁热去除相机底部四个脚垫,脚垫里隐藏着四个螺丝,用十字螺丝刀拧下
  4. 趁热撕下贴纸,防止二维码损坏,坏了就不能扫码链接了,贴纸下也有一颗螺丝,直接拧下。
  5. 从底部往相机内部拆,遇到螺丝拆螺丝,遇到排线小心取下排线,最后把主板拆出来。

主板如下图所示
小米摄像机升级失败,小米摄像机黄灯常亮修复,全网最硬核修复

下图所示的xh25l12833f是flash芯片,相机固件就存这里。
小米摄像机升级失败,小米摄像机黄灯常亮修复,全网最硬核修复

修补固件

这里的主要思路是,将原相机损坏部分的数据通过其他能用的相机的完好的数据来替换,并且保留原相机数据。其实如果有其他相机的整个固件直接刷进去应该也能用,但是我估计会导致你的相机的序列号和别人的冲突。下面我也把修补好的固件分享给大家,供大家使用

  1. 连接相机,如下图所示,注意不要接反了,接反了编程器的红灯不会亮。
    小米摄像机升级失败,小米摄像机黄灯常亮修复,全网最硬核修复

  2. 读取原相机固件 ,得到backup.bin文件

 sudo apt update
 sudo apt install flashrom
 sudo flashrom -p ch341a_spi -r backup.bin -c MX25L12805D
  1. 去这里 下载对应相机的的恢复固件,我的型号是MJSXJ06CM,下载解压开得到tf_update.img
  2. 去网上找一个自己对应型号相机的能用的固件dumped_firmware.bin,我的MJSXJ06CM在这里找到的
  3. 使用binwalk工具分析backup.bin,tf_update.img,的内容
$ binwalk backup.bin 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
80649         0x13B09         xz compressed data
81388         0x13DEC         CRC32 polynomial table, little endian
327744        0x50040         xz compressed data
2424832       0x250000        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 7370730 bytes, 2104 inodes, blocksize: 131072 bytes, created: 2020-09-15 08:29:51
10158080      0x9B0000        JFFS2 filesystem, little endian
11804260      0xB41E64        JFFS2 filesystem, little endian
15387028      0xEAC994        JFFS2 filesystem, little endian
16646255      0xFE006F        Unix path: /usr/share/zoneinfo/Asia/Shanghai
$ binwalk tf_update.img 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
64            0x40            xz compressed data
2097152       0x200000        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 7370730 bytes, 2104 inodes, blocksize: 131072 bytes, created: 2020-09-15 08:29:51
9830400       0x960000        JFFS2 filesystem, little endian

说明:
这里的DECIMAL,代表十进制的起始地址,如要提取tf_update.img 中Squashfs filesystem文件系统,就在终端输入
dd if=tf_update.img of=rootfs.bin bs=1 count=7733248 skip=2097152
这里的skip代表起始地址,count代表读取内容的大小,bs代表块的大小设为1计算简单点一个块一个字节,通过下一个数据的起始地址减当前数据起始地址得到9830400-2097152 = 7733248

最后一个分区的count 使用文件大小的size来减去这个分区起始地址来计算

  1. 编辑一个脚本文件run.sh,根据以上分析内容,添加如下内容
#!/bin/bash
mkdir files
mkdir out
dd if=tf_update.img of=files/kernel.bin bs=1 count=2097152 skip=0 #从文件tf_update.img,读取从地址0开始,大小为2097152字节的数据
dd if=tf_update.img of=files/rootfs.bin bs=1 count=7733248 skip=2097152 #读取从地址2097152开始,大小为7733248字节的数据
dd if=tf_update.img of=files/data.bin bs=1 count=6488144 skip=9830400
dd if=dumped_firmware.bin of=files/vendor1.bin bs=1 count=131072 skip=16646144 
dd if=backup.bin of=files/vendor2.bin bs=1 count=65536 skip=16711680

cp dumped_firmware.bin -f out/flash.bin 

dd if=files/kernel.bin of=out/flash.bin bs=1 count=2097152 seek=327680 # 把数据kernel.bin从地址327680覆盖2097152个数据到flash.bin
dd if=files/rootfs.bin of=out/flash.bin bs=1 count=7733248 seek=2424832
dd if=files/data.bin of=out/flash.bin bs=1 count=6488144 seek=10158080
dd if=files/vendor1.bin of=out/flash.bin bs=1 count=131072 seek=16646144 #这里的seek由上面data的地址加数据大小得到10158080 + 6488144 = 16646144
dd if=files/vendor2.bin of=out/flash.bin bs=1 count=65536 seek=16711680 

注意:型号是如果是MJSXJ06CM的相机这个脚本可以直接使用,如果是其他型号,需要对照着修改以上参数,flash.bin的数据大小必须保证为16,777,216字节。

  1. 执行修复固件,将上面准备的文件run.sh dumped_firmware.bin tf_update.img backup.bin 放在同一个文件夹下,在终端输入sh run.sh,等待脚本执行完毕,在文件夹out下找到flash.bin,即为修好的固件。

刷入固件

直接在终端执行

$ sudo flashrom -p ch341a_spi -w  out/flash.bin -c MX25L12805D

如果嫌麻烦,并且和我的相机型号一样,同为MJSXJ06CM的也可以直接刷我修补好的固件,放心没有添加任何后门程序的哈。
上一步操作执行完后装机,不出意外相机应该能正常启动了。

破解相机

破解相机,登录相机后台,参考连接文章来源地址https://www.toymoban.com/news/detail-498652.html

A firmware hack is possible, but requires some tools:

CH341A flash programmer
SOIC8 clip and some dupont wires
Complete device teardown
Basic steps are:

Create a flash backup:
flashrom -p ch341a_spi -r backup.bin

Download the firmware and put it into the same folder.

Run this script to patch the backup:

#!/bin/bash
# extract firmware
mkdir -p files
dd if=tf_recovery.img of=files/kernel.bin bs=1 count=2097152
dd if=tf_recovery.img of=files/rootfs.bin bs=1 count=7733248 skip=2097152
dd if=tf_recovery.img of=files/data.bin bs=1 count=6488064 skip=9830400
dd if=backup.bin of=files/vendor.bin bs=1 count=131072 skip=16646144

# patch jffs2 partition
sudo modprobe mtdblock
sudo modprobe mtdram total_size=6336
sudo dd if=files/data.bin of=/dev/mtdblock0 bs=1
mkdir mount
sudo mount -t jffs2 /dev/mtdblock0 mount
echo '#!/bin/sh' | sudo tee -a mount/bin/log_diag_platform.sh
echo '/mnt/sdcard/override.sh' | sudo tee -a mount/bin/log_diag_platform.sh
sudo chmod 755 mount/bin/log_diag_platform.sh
sudo umount mount
rmdir mount
sudo dd if=/dev/mtdblock0 of=files/data.bin bs=1

# update flash backup
mkdir -p out
cp backup.bin -f out/flash.bin
dd if=files/kernel.bin of=out/flash.bin bs=1 count=2097152 seek=327680
dd if=files/rootfs.bin of=out/flash.bin bs=1 count=7733248 seek=2424832
dd if=files/data.bin of=out/flash.bin bs=1 count=6488064 seek=10158080
dd if=files/vendor.bin of=out/flash.bin bs=1 count=131072 seek=16646144
Re-flash the modified backup:
flashrom -p ch341a_spi -w out/flash.bin

Prepare the sdcard script:

/sdcard/override.sh

#!/bin/sh
main() {
  # start telnet
  /mnt/sdcard/busybox telnetd
}

if [ ! -f /tmp/.override ]; then
 touch /tmp/.override
 main
fi
Press the reset button (briefly) on the camera to launch the override script.

到了这里,关于小米摄像机升级失败,小米摄像机黄灯常亮修复,全网最硬核修复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【UE Sequencer系列】08-副镜头切换、摄像机绑定摇臂的使用、摄像机绑定滑轨的使用

    目录 一、副镜头切换  二、摄像机绑定摇臂的使用  三、摄像机绑定滑轨的使用 1. 为“shot_05”新建镜头(复制资产,创建新的关卡序列)  同样的步骤再创建一个“Shot_07_02”  此时我们就可以对“Shot_07”中的两个副镜头进行切换,通过如下操作实现副镜头切换: (“Sho

    2024年02月07日
    浏览(42)
  • 【UE4】 通过按钮点击实现摄像机的切换 并通过鼠标控制新摄像机的旋转

    首先创建了4个Actor蓝图类 每个蓝图类内只拥有一个摄像机组件 将每个actor蓝图类摆放到场景的合适位置 在关卡蓝图中创建自定义事件,当该事件触发时切换摄像机 创建一个控件蓝图,在控件蓝图中创建如下5个按钮,并创建点击事件。按钮分别表示车上的4个镜头和车外自由

    2023年04月09日
    浏览(56)
  • Unity摄像机跟随

    将摄像机直接拖拽到被跟随的目标下面即可,这样摄像机永远在目标的后面 缺点: 屏幕旋转太平滑了 目标物体在屏幕上的位置永远不变 目标物体被销毁时总不能把摄像机也销毁了吧 先相机坐标和物体坐标做差,求得偏移量,在之后的每一帧里,将偏移量加上物体的坐标。

    2024年02月21日
    浏览(50)
  • 打架识别摄像机

    随着社会治安问题的增加,打架事件在公共场所频繁发生,给社会治安带来了一定程度的威胁。因此,为了提高公共场所的安全性,可以利用现代科技,如人工智能和摄像技术,开发一种打架识别摄像机。 这种摄像机可以通过人工智能算法对视频进行实时监测,当监测到有两

    2024年01月25日
    浏览(40)
  • 海康摄像机配置流程

    海康摄像机配置流程 文档所用摄像机型号: DS-2CD2245XM-LGLSET 1、先接通摄像机电源,连上网线 2、在 设备网络搜索 客户端中搜索并激活设备 (1)下载 设备网络搜索 ​ 设备网络搜索工具下载地址 (2)没有激活的设备显示未激活状态,此时记下所显示的IP地址 ​ (3)在谷歌

    2024年02月02日
    浏览(57)
  • Unity 摄像机

    摄像机分为两种  (1)透视摄像机 (2) 正交摄像机  一般3D游戏使用的透视多一点,2D游戏使用正交多一点。 相机参数 清除标记: (1)天空盒 (2)仅深度,类似于权重,优先级,深度大的覆盖住深度小的视线 例如 主相机显示的却不是当先视线,而是新相机的视线 ,主

    2023年04月21日
    浏览(45)
  • ThreeJS - 修复摄像机近距离模型或者摄像机在某些观察角度3D模型部分或者全部不可见的问题

    最近使用three.js在场景中显示gltf模型时候,当我使用 THREE.OrbitControls 操作摄像机想近距离观察gltf模型的时候发现一部分模型消失了,比如说假如这个模型是一匹马,当我远距离观察时可以完整的看到整匹马,但是当我想拉近摄像头近距离观察马的时候,这个时候我只能看到马

    2023年04月08日
    浏览(39)
  • OpenCV之摄像机标定

    最近方向定下来是双目立体视觉,主要是做重建这块的研究。大致过程是图像获取-摄像机标定-特征提取-匹配-三维重建,当然开始可以进行图像预处理,矫正,后期可以进行点云的进一步处理,如渲染表面使其更接近于现实物体。 图像获取相对来说比较简单,用相机拍摄目

    2024年02月09日
    浏览(36)
  • 海康摄像机没有声音问题

    1、手机app端拉流发现没有声音 2、查找海康摄像机是否有mic 3、使用海康自己的内部IP,预览发现是有声音的。 4、怀疑是转码的时候没有音频导致的,修改仍然无效 5、反复使用ffplay播放 rtsp://admin:****2021@192.168.50.64,一直没有声音,崩溃   6、使用ffprobe 探测这个流发现只有一

    2024年02月09日
    浏览(37)
  • unity摄像机跟随鼠标旋转

     float vertical = Input.GetAxis(\\\"Mouse X\\\") float horizontal = Input.GetAxis(\\\"Mouse Y\\\") 第二种 通过 计算坐标时只需要通过 Quaternion.Euler 来取得旋转四元数,以玩家为原点衍生一条(0,0,-1)的向量并乘上四元数以旋转至 Player 指向摄像机的方向,最后乘上 Distance ,即可得到摄像机相对玩家的偏移

    2024年02月11日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包