ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [android] Android Dev Phone Firmware 복구 하기
    기술 관련/Android 2009. 5. 28. 16:30

    전에 업급했듯 Android 단말은 개발용 단말인 Dev Phone 1과 상용 단말인 G1 단말이 있다. Dev1과 G1의 가장 큰 차이는 바로 adb service의 제공 여부다. adb service는 SDK와 단말 사이에 대한 Protocol을 지원하는 것인데 G1은 상용 단말이므로 기본 동작은 disable 되어 출시된다.

    Dev Phone은 G1과 달리 이통사와 상관 없이 출시되고 또한 기업의 개발자들이 구매를 하므로 G1 보다 구매 가격이 높다. 따라서, G1을 이미 구매한 사람들이나 일반적인(?) Android 프로그래머는 단말에서 테스트 하기 어렵다.

    그런데, Dev1이 아닌 G1 단말에서도 adb를 가능하게 해 주는 방법이 공개되었다. 초기 Android Version의 Back door를 이용하여 adb service를 활성화 하는 것인데 이를 이용하면 G1 단말에서 개발이 가능하게 된다 (이전 글 Android Dev Phone & G1 Phone Unlock 참조). 그 대신, adb는 root 권한을 가질 수 없으며, G1 단말 제조사인 HTC의 공식 update 도 사용 할 수 없어 일부 S/W 개발자가 배포한 Customized Firmware를 이용하거나, Customized Firmware를 직접 만들어 넣는 수 밖에 없다.

    Dev Phone의 경우 adb root service는 기본으로 제공한다. 그러나, 최초 부팅 시 Google 계정 등록 화면으로 진행하도록 되어 있어 마치 Lock이 걸린 것 처럼 보일 수 있다. 그런데 만약 이를 해결 하기 위해 G1의 활성화 방법, 즉, Firmware를 업데이트 하는 방법으로 해결 할 경우 껍데기는 Dev1이지만 내부 version은 G1이므로 위에서 언급한 G1에 대한 문제점이 그대로 발생하게 된다.

    그렇다고 원래대로 되돌리기도 그리 쉽지는 않다. 이렇게 Dev Phone이 G1으로 변경된 상태에서 Dev Phone Update를 진행하면 비록, Hardware는 Dev1이라 할지라도 Software가 G1이므로 정상적인 업데이트가 진행되지 않는다.

    만약 일반적인 Dev Phone의 업데이트 과정을 진행한다면 다음과 같은 메시지를 보게 된다.

    Android System recovery utility
    E:Can;t open /cache/recovery/command

    Home_Back - reboot system now
    Alt+L - toggle log text display
    Alt+S - appliy sdcard:update.zip
    Alt+W - wipe data/factory reset

    Installing from sdcard...
    Finding update package...
    Opening update package...
    Verfying udpate package...
    E:No signature (5 files)
    E:Verification failed
    Installation aborted.

    Press Home+Back to reboot


    결국 S/W가 G1으로 변경되면서 Bootloader Binary도 같이 변경되었기 때문에 해당 업데이트가 진행되지 않는 것이다.

    Bootloader Version은 다음과 같이 세 가지 SPL이 있다.

    HBOOT-0.95.3000 : Engineering SPL (Dev1)
    HBOOT-0.95.0000 : Original SPL (G1)
    HSPL10.95.3000 : Hard SPL ( Customized)

    다음과 같은 방법으로 현재 Bootloader Binary 정보를 확인 해 볼 수 있는데 G1일 경우 HBOOT-0.95.0000 임을 확인 해 볼 수 있다.

    1. 단말 종료
    2. CAMERA 버튼 + POWER 로 부팅


    따라서, G1용 Bootloader 를 Dev1이나 Customized Version으로 변경을 해 주어야 하며 이는 다음과 같은 방법으로 진행한다.

    먼저 adb root service가 가능한지 확인 해 본다.adb root를 입력하여 root 계정을 활성화 여부를 확인 한다.
    ※ adb service는 활성화 한 상태이어야 한다.

    $ adb root
    error: closed


    만약 root 계정이 활성화 되지 않는다면 위와 같이 에러 메시지가 출력되며 그렇지 않는 경우 adb shell로 접속 시 root 권한으로 실행 할 수 있다. (※ G1인 경우 adb를 이용한 root 계정은 거의 얻을 수 없다고 본다)

    root 권한을 얻었다면 이제 이미지 복구를 위해 다음과 같은 과정을 거쳐 이미지를 복구한다.

    - Android Market이나 별도의 파일로 제공되는 Telnet Application을 설치한다.
    - 복구에 필요한 recovery.img 파일과 Hard SPL 혹은 Engineering SPL을 SDCard에 update.zip으로 복사한다.
    - 재부팅 후 Home Screen 화면에서 Keypad를 연다.
    - ↙↙telnetd↙ 를 입력한다. (※ 이 때 telnetd라고 출력되는 것은 정상)
    - Telnet Application을 실행하면 root 권한을 가진 shell 로 접속이 되는 것을 확인 해 볼 수 있다.
    - 이제 Telnet App에서 다음과 같이 입력한다.
    # mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
    # cd /sdcard
    # flash_image recovery recovery.img
    # cat recovery.img > /system/recovery.img
    - 단말 종료 후 HOME + POWER 버튼을 눌러 Firmware Update 모드로 진입한다.
    - ALT + L을 누르면 Update 메시지가 출력되며, ALT + S를 눌러 SPL Verify를 진행한다.
    - 업데이트가 완료되면 HOME + BACK을 누르면 Writing이 진행되고 자동으로 재부팅 된다.
    - 재부팅 시 Flash ROM Writing이 진행되는 것을 볼 수 있다.
    - 두 번 정도의 재부팅이 진행되면 ANDROID LOGO가 약간 달라진 것을 볼 수 있다.

    이제 Dev Phone Update v1.5 Binary를 설치 해 볼 수 있으며 이와 관련된 부분은 이전 글 Android Dev Phone Firmware Update 하기 를 참고 하기 바란다.

    참고 링크

    * http://forum.xda-developers.com/showthread.php?t=442480
    * http://www.androidandme.com/2009/05/guides/beginners-guide-for-rooting-your-android-g1-to-install-cupcake/
    * http://androidcommunity.com/forums/f54/haykuro-adp1-5hr3-adp1-5hr3-a2sd-1-5-cupcake-16001/index515.html

    댓글

Designed by Tistory.