현재 A800을 쓰고 있지만 반도체 수급 문제때문인지 단종되고 A800s가 새로 나와 현재 시장에서 새로 팔리는 물건은 거의 A800s 이더군요.
메인 SoC 외 다른 스펙 차이점은 없는 것 같아 이 펌웨어도 음성을 교체하려 봤더니 펌웨어 구조 자체가 기존 70mai Pro 나 A800s 와는 다른 것 같습니다.
통상 같은 회사 블랙박스 같은 경우 펌웨어가 유사점을 갖는게 보통인데 70mai 시리즈의 경우는 전 시리즈가 AP가 달라서 그런지 펌웨어가 전부 다른게 뭔가 특이하더군요.
어쨌든 이것도 결국 리눅스 커널 기반의 펌웨어이기에 방법만 찾으면 언팩 및 리팩이 가능할 것 같아 일단 도전해보기로 했습니다.
현재 A800s 의 기본 OTA 펌웨어는 0.0.47w 버전으로 Dashcam Talk 에 올라온 파일을 다운받았습니다.
https://dashcamtalk.com/70mai-a800s/
파일을 다운로드 받아보니 이번 펌웨어는 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개 음성이었던걸 보면 바뀐게 좀 있는 것 같은데 음성파일을 맞춰서 업데이트 한 후 리팩을 해 봐야겠습니다.
'자동차 이야기 > 샤오미 70Mai' 카테고리의 다른 글
샤오미 블랙박스, 70mai A800s 펌웨어 한국어 음성패치 테스트 완료 (27) | 2021.07.21 |
---|---|
샤오미 블랙박스, 70mai A800s 펌웨어 언팩(2) (0) | 2021.07.20 |
샤오미 블랙박스, 70mai A800 1.0.9 펌웨어 공개 (73) | 2021.04.03 |
샤오미 블랙박스, 70mai A800 1.0.8B 펌웨어 공개 (12) | 2021.03.28 |
블랙박스 펌웨어 업데이트시 SD카드 포맷 방법 (7) | 2021.03.12 |
댓글