# 小蟻攝影機 12CN版本 黃燈長亮故障 ## 緣由 家中一台小蟻攝影機在之前可能因為在韌體更新時斷電,導致出現黃燈長亮、死機的狀態,並且無法以SD卡更新的方式救活,接上Serial Port之後發現機器卡在`Uncompressing Linux... done, booting the kernel.`,研判系統可能有損毀。 ## 解決辦法 利用串口重刷Kernel,參考 [4PDA論壇](https://4pda.to/forum/index.php?act=search&source=pst&result=posts&sort=rel&subforums=0&query=mount&topics[]=638230&forums=929&st=20)與其他網站上的方法: * 由於網上找不到12CN版本的mtdblock資源 * 對正常相同型號的攝影機的Telnet協定下指令,把mtdblock導出至SD卡 - [導出韌體](#一、導出韌體) * 藉由Serial port對故障的攝影機下達寫入的指令來抹除和把資料寫入mtdblock分區 - [刷入韌體](#二、刷入韌體) #### 準備工具 * Serial port to USB 介面裝置 * Serial port 監控軟體 SerialTools(Mac) 或 Putty(Windows) ### 一、導出韌體 1. 需要一台正常的機器 2. 下載[破解版韌體 yi-hack](https://github.com/fritz-smh/yi-hack) 3. 修改Wi-Fi設定檔`yi-hack/sd/test/wpa_supplicant.conf`,把SSID和密碼修改成自己的資料 4. 把SD資料夾的文件放至SD卡中 5. 在正常的機器上刷入破解版韌體 6. 想辦法得到機器的ip位置,可以使用以下方法: * ip scanner軟體 * 修改`yi-hack/sd/test/yi-hack.cfg`這個文件中的DEBUG成YES,透過查看Log資料尋找ip位置 * 以Serial port進入系統,輸入`ifconfig`查看ip位置 7. 以Telnet方式連接至機器`telnet ip`,導出mtdblock至SD卡 , `username: root ` `password: qwer1234` ``` cmd for i in `cat /proc/mtd |grep -v ^dev | awk '{ print $1 $NF }' |sed 's/\"//g'` ; do n="`echo ${i%%:*}|sed 's/mtd//'`" f="/home/hd1/mtdblock${n}.${i##*:}.img" echo -n -e "$n - '$f' \t " cat /dev/mtdblock${n} >${f} ls -l ${f} | awk '{ print $5 }' done ``` 8. 依個人需求刷回原廠韌體 9. 導出過程: ![IMG_0354](https://hackmd.io/_uploads/r1A2Z-Sqa.jpg =450x250) 10. 把SD卡中的檔案讀出,備份至電腦中,並且把以下三個檔案:os、rootfs、home放至SD卡當中,來準備刷入韌體至故障的攝影機 ![截圖 2024-01-29 下午8.27.24](https://hackmd.io/_uploads/BJ4SqGH5T.png =600x200) ### 二、刷入韌體 1. 把導出韌體的SD卡放置於故障的攝影機 2. 連接Serial port至電腦 [教學](https://diy.2pmc.net/solved-xiaomi-xiao-yi-ant-home-camera-can-used-china/comment-page-3/),並打開Serial Port監控軟體選至對應的Serial Port ![大截圖 2024-01-29 下午6.58.36](https://hackmd.io/_uploads/HJuESbH9a.jpg) 3. 在攝影機上電時輸入Ctrl+C 以進入uboot 4. 檢查kernel,失敗的話會卡在booting the kernel ``` cmd setenv bootargs mem=40M console=ttyAMA0,115200 mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),3584k(rootfs),9088k(home),128k(vd) init=/bin/sh sf probe 0 sf read 0x82000000 0x80000 0x380000 bootm 0x82000000 mmc start mmc reset fatload mmc 0:1 0x82000000 mtdblock3.os.img bootm 0x82000000 ``` 5. 刷入剛剛導出的韌體 OS ``` cmd mmc start mmc reset fatload mmc 0:1 0x82000000 mtdblock3.os.img sf probe 0 sf erase 0x80000 0x300000 sf write 0x82000000 0x80000 0x300000 ``` ROOTFS ``` cmd mmc start mmc reset fatload mmc 0:1 0x82000000 mtdblock4.rootfs.img sf probe 0 sf erase 0x380000 0x380000 sf write 0x82000000 0x380000 0x380000 ``` HOME ``` cmd mmc start mmc reset fatload mmc 0:1 0x82000000 mtdblock5.home.img sf probe 0 sf erase 0x700000 0x8E0000 sf write 0x82000000 0x700000 0x8E0000 ``` 6. 完成後輸入`reset`,機器會重啟 7. 會聽到啟動中的語音,代表機器回復正常 ## 參考資料 > [mtdblock 導出方法](https://4pda.to/forum/index.php?showtopic=638230&view=findpost&p=53292564) > [mtdblock 寫入方法](https://4pda.to/forum/index.php?showtopic=638230&view=findpost&p=58416592) > [Xiaomi Xiao Yi Ant HOME CN12 – This camera can only be used in China (1.8.6.1 – 1.8.7.0)](https://diy.2pmc.net/solved-xiaomi-xiao-yi-ant-home-camera-can-used-china/comment-page-3/)