본문 바로가기
자동차 이야기/샤오미 70Mai

샤오미 블랙박스, 70mai A800s 펌웨어 언팩(1)

by 이런 저런 2021. 6. 23.

현재 A800을 쓰고 있지만 반도체 수급 문제때문인지 단종되고 A800s가 새로 나와 현재 시장에서 새로 팔리는 물건은 거의 A800s 이더군요.

메인 SoC 외 다른 스펙 차이점은 없는 것 같아 이 펌웨어도 음성을 교체하려 봤더니 펌웨어 구조 자체가 기존 70mai Pro 나 A800s 와는 다른 것 같습니다.

통상 같은 회사 블랙박스 같은 경우 펌웨어가 유사점을 갖는게 보통인데 70mai 시리즈의 경우는 전 시리즈가 AP가 달라서 그런지 펌웨어가 전부 다른게 뭔가 특이하더군요.

어쨌든 이것도 결국 리눅스 커널 기반의 펌웨어이기에 방법만 찾으면 언팩 및 리팩이 가능할 것 같아 일단 도전해보기로 했습니다.

펌웨어 다운로드

현재 A800s 의 기본 OTA 펌웨어는 0.0.47w 버전으로 Dashcam Talk 에 올라온 파일을 다운받았습니다.

https://dashcamtalk.com/70mai-a800s/

 

70mai A800S - DashCamTalk

The 70mai A800S is a good bang for your buck 4K camera, the In the $100 price range, there are few cameras that will have better video quality.

dashcamtalk.com

파일을 다운로드 받아보니 이번 펌웨어는 bin 파일 하나더군요.

헥스에디터를 사용해 열어보니 패킹된 파일이고 ubi 파티션 등등 파일정보가 보입니다.

일단 가장 기본적인 binwalk 을 사용해 펌웨어를 분석해 봤습니다.

binwalk -f info.txt FW_DR2800.bin

결과물 내용을 보면 아래와 같은 내용들이 보입니다.

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
82184         0x14108         xz compressed data
86080         0x15040         xz compressed data
2482176       0x25E000        gzip compressed data, maximum compression, from Unix, NULL date (1970-01-01 00:00:00)
9981952       0x985000        Executable script, shebang: "/bin/sh"
9982917       0x9853C5        Unix path: /customer/modules/4.9.84/usb-common.ko
9982967       0x9853F7        Unix path: /customer/modules/4.9.84/usbcore.ko
9983011       0x985423        Unix path: /customer/modules/4.9.84/adc-keys.ko
9983059       0x985453        Unix path: /customer/modules/4.9.84/fat.ko
9983102       0x98547E        Unix path: /customer/modules/4.9.84/msdos.ko
9983147       0x9854AB        Unix path: /customer/modules/4.9.84/vfat.ko
9983191       0x9854D7        Unix path: /customer/modules/4.9.84/mmc_core.ko
9983239       0x985507        Unix path: /customer/modules/4.9.84/mmc_block.ko
9983288       0x985538        Unix path: /customer/modules/4.9.84/kdrv_sdmmc.ko
9983338       0x98556A        Unix path: /customer/modules/4.9.84/ehci-hcd.ko
9983386       0x98559A        Unix path: /customer/modules/4.9.84/scsi_mod.ko
9983434       0x9855CA        Unix path: /customer/modules/4.9.84/usb-storage.ko
9983623       0x985687        Unix path: /mnt/mmc/uvc/udc-uvc.sh
9983651       0x9856A3        Unix path: /mnt/mmc/uvc/prog_uvc -A 7 
9983848       0x985768        Unix path: /customer/modules/4.9.84/usb-common.ko
9983895       0x985797        Unix path: /customer/modules/4.9.84/usbcore.ko
9983939       0x9857C3        Unix path: /customer/modules/4.9.84/ehci-hcd.ko
9983987       0x9857F3        Unix path: /customer/modules/4.9.84/scsi_mod.ko
9984035       0x985823        Unix path: /customer/modules/4.9.84/usb-storage.ko
9984083       0x985853        Unix path: /customer/modules/4.9.84/udc-core.ko
9984128       0x985880        Unix path: /customer/modules/4.9.84/libcomposite.ko
9984177       0x9858B1        Unix path: /customer/modules/4.9.84/udc-msb250x.ko
9984371       0x985973        Unix path: /customer/modules/4.9.84/usb-common.ko
9984418       0x9859A2        Unix path: /customer/modules/4.9.84/usbcore.ko
9984462       0x9859CE        Unix path: /customer/modules/4.9.84/ehci-hcd.ko
9984510       0x9859FE        Unix path: /customer/modules/4.9.84/scsi_mod.ko
9984558       0x985A2E        Unix path: /customer/modules/4.9.84/usb-storage.ko
9984606       0x985A5E        Unix path: /customer/modules/4.9.84/udc-core.ko
9984651       0x985A8B        Unix path: /customer/modules/4.9.84/libcomposite.ko
9984700       0x985ABC        Unix path: /customer/modules/4.9.84/udc-msb250x.ko
10113024      0x9A5000        JPEG image data, JFIF standard 1.01
10113054      0x9A501E        TIFF image data, big-endian, offset of first image directory: 8
10244096      0x9C5000        JPEG image data, JFIF standard 1.01
10244126      0x9C501E        TIFF image data, big-endian, offset of first image directory: 8
10375168      0x9E5000        JPEG image data, JFIF standard 1.01
10375198      0x9E501E        TIFF image data, big-endian, offset of first image directory: 8
10506240      0xA05000        JPEG image data, JFIF standard 1.01
10506270      0xA0501E        TIFF image data, big-endian, offset of first image directory: 8
10637312      0xA25000        JPEG image data, JFIF standard 1.01
10768384      0xA45000        JPEG image data, JFIF standard 1.01
10768414      0xA4501E        TIFF image data, big-endian, offset of first image directory: 8
11030528      0xA85000        JPEG image data, JFIF standard 1.01
11030558      0xA8501E        TIFF image data, big-endian, offset of first image directory: 8
11161600      0xAA5000        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 31438304 bytes, 728 inodes, blocksize: 131072 bytes, created: 2021-02-25 08:59:17
42602496      0x28A1000       UBIFS filesystem superblock node, CRC: 0xC4380269, flags: 0x4, min I/O unit size: 2048, erase block size: 126976, erase block count: 13, max erase blocks: 131, format version: 4, compression type: lzo
42729472      0x28C0000       UBIFS filesystem master node, CRC: 0x16FCB140, highest inode: 64, commit number: 0
42856448      0x28DF000       UBIFS filesystem master node, CRC: 0x2ADAE67, highest inode: 64, commit number: 0
44253184      0x2A34000       UBIFS filesystem superblock node, CRC: 0x4F68A065, flags: 0x4, min I/O unit size: 2048, erase block size: 126976, erase block count: 13, max erase blocks: 84, format version: 4, compression type: lzo
44380160      0x2A53000       UBIFS filesystem master node, CRC: 0x84806DD8, highest inode: 66, commit number: 0
44507136      0x2A72000       UBIFS filesystem master node, CRC: 0x90D172FF, highest inode: 66, commit number: 0

이 정도면 binwalk 만으로도 압축 풀 수 있을 것 같아 한번 돌려보니 잘 풀리는군요.

binwalk -e FW_DR2800.bin

압축풀린 내용은 squashfs-root 폴더에 들어있습니다.

오디오는 audios 폴더에 들어있고 이전과 비슷하게 영어, 일본어, 한국어, 폴란드어, 러시아어, 스페인어, 그리고 마지막은 체코어인가요? 를 제공합니다.

한국어 파일 폴더를 보니 음성파일이 37개 뿐입니다. 이전 70mai, 70mai 500s, 800이 전부 66개 음성이었던걸 보면 바뀐게 좀 있는 것 같은데 음성파일을 맞춰서 업데이트 한 후 리팩을 해 봐야겠습니다.

댓글