오딘(Odin)은 삼성 갤럭시 폰에 펌웨어 바이너리를 다운로드하는 툴입니다. 구글의 Nexus, Pixel은 fastboot를 이용하여 바이너리를 다운로드할 수 있지만, 삼성에서 제공하는 펌웨어 바이너리는 Odin이라는 별도의 툴로 펌웨어 바이너리를 다운로드할 수 있습니다.
내부적인 동작은, 안드로이드 디바이스의 내부 스토리지는 몇몇 파티션으로 나누어져 있고, 펌웨어 바이너리에서 해당 파티션에 맞는 파일을 알아서 flash해줍니다.
갤럭시 디바이스의 파티션 정보를 보는 방법은 삼성 스마트폰에 Firmware를 다운로드하는 방법(heimdall)에서 설명하였습니다.
실행파일 다운로드
Odin은 Linux, Windows에서 실행가능한 툴을 모두 제공합니다. 실행파일은 XDA에서 다운로드할 수 있습니다.
다운받은 파일에서, 리눅스의 오딘 실행 파일의 이름은 odin4
이고, 윈도우의 실행파일은 Odin3 v3.12.7.exe
입니다.
리눅스 툴은 커맨드 기반이고, help를 치시면 관련 명령어들이 나옵니다. AP이미지는 -a
명령어로, Bootloader, CP, CSC 이미지도 해당 옵션을 사용하여 flash하면 됩니다.
$ ./odin4 -h
Usage : odin4 [args...]
Odin4 downloader. odin4 version 1.0.
-v SHOW VERSION
-w Show License
-b Add Bootloader file
-a Add AP image file
-c Add CP image file
-s Add CSC file
-u Add UMS file
-V Home binary validation check with pit file
-d Set a device path (detect automatically without this option)
-l Show downloadable devices path
윈도우 툴은 UI 기반이며, BL, AP 등 해당하는 곳에 바이너리를 넣어주고 디바이스에 다운로드해주면 됩니다.
펌웨어 파일인 BL, AP 등의 파일은 tar로 압축되어있습니다. 그리고 md5 확장자입니다. md5는 파일의 무결성을 체크하는 기능입니다. tar의 압축을 풀어보면 내부에 boot.img, recovery.img 등의 이미지가 있고, 이름이 의미하는 파티션으로 다운로드가 됩니다.
주의 사항
XDA의 툴 정보를 보면 2016년에 릴리즈된 버전입니다. 2016년 이후 개발된 폰에도 적용이 되는지는 확실하지 않습니다. 이 부분 주의하셔서 툴을 사용하셔야 합니다. 더 높은 버전이 있다면 그 버전을 사용하시는 것이 좋습니다.
참고
Related Posts
- Android 14 - 사진/동영상 파일, 일부 접근 권한 소개
- Android - adb push, pull로 파일 복사, 다운로드
- Android 14 - 암시적 인텐트 변경사항 및 문제 해결
- Jetpack Compose - Row와 Column
- Android 13, AOSP 오픈소스 다운로드 및 빌드
- Android 13 - 세분화된 미디어 파일 권한
- Android 13에서 Notification 권한 요청, 알림 띄우기
- Android 13에서 'Access blocked: ComponentInfo' 에러 해결
- 에러 해결: android gradle plugin requires java 11 to run. you are currently using java 1.8.
- 안드로이드 - 코루틴과 Retrofit으로 비동기 통신 예제
- 안드로이드 - 코루틴으로 URL 이미지 불러오기
- Android - 진동, Vibrator, VibrationEffect 예제
- Some problems were found with the configuration of task 에러 수정
- Query method parameters should either be a type that can be converted into a database column or a List
- 우분투에서 Android 12 오픈소스 다운로드 및 빌드
- Android - ViewModel을 생성하는 방법
- Android - Transformations.map(), switchMap() 차이점
- Android - Transformations.distinctUntilChanged() 소개
- Android - TabLayout 구현 방법 (+ ViewPager2)
- Android - 휴대폰 전화번호 가져오는 방법
- Android 12 - Splash Screens 알아보기
- Android 12 - Incremental Install (Play as you Download) 소개
- Android - adb 명령어로 bugreport 로그 파일 추출
- Android - adb 명령어로 App 데이터 삭제
- Android - adb 명령어로 앱 비활성화, 활성화
- Android - adb 명령어로 특정 패키지의 PID 찾기
- Android - adb 명령어로 퍼미션 Grant 또는 Revoke
- Android - adb 명령어로 apk 설치, 삭제
- Android - adb 명령어로 특정 패키지의 프로세스 종료
- Android - adb 명령어로 screen capture 저장
- Android - adb 명령어로 System 앱 삭제, 설치
- Android - adb 명령어로 settings value 확인, 변경
- Android 12 - IntentFilter의 exported 명시적 선언
- Android - adb 명령어로 공장초기화(Factory reset)
- Android - adb logcat 명령어로 로그 출력