하드웨어2020. 4. 19. 18:59

2018년 8월 폰을 처음 사고 카메라 성능에 절망해서 구글 카메라 설치하는 법을 줄곧 찾다가 부트로더 언록(폰 초기화 필요)이 필요하다고 해서 포기한 적이 있다.


근데 오늘 안드 10으로 업데이트(20-4-14 OTA) 후 그 사실을 그만 잊어버리고 부트로더를 언록해버렸다... 이상하게도 문자와 통화 내역이 8개월 정도 백업이 안 돼서 걔네는 날렸다...


기왕 했으니 기록 차원에서 방법을 적어둔다. 요약하면, 크게는 다음 글을 보고 따라 했지만, 개선(?)할 부분들이 좀 있다.

https://www.thecustomdroid.com/enable-camera2-api-xiaomi-mi-a2-lite-guide/



먼저 준비물들. 위 글에는 아직 안드 10 펌웨어(boot image)가 없는데, 공식 순정 롬은 다음 글 등을 참고해서 받을 수 있다.

https://t.me/MIUI11_Updates/1001


이걸 받으면 zip 안에 payload.bin이 있는데, 그건 payload_dumper를 이용하면 boot.img를 추출할 수 있다(깃허브 설명에는 protobuf 패키지만 설치하면 된다고 써 있으나 실행해보니 bs4diff도 필요하다고 해서 걔도 설치를 했다).

https://github.com/vm03/payload_dumper


그다음 안드로이드 SDK 플랫폼 도구(adb, fastboot 등)가 없다면 필요하다. 오늘 기준으로 공식 사이트에는 29.0.5까지만 있는데 구글링으로 나온 게 29.0.6이라 난 그걸 썼다.

https://developer.android.com/studio/releases/platform-tools


끝으로 magisk를 미리 폰에 설치해두자. apk 하나만 폰에 옮기고 설치하면 된다.

https://github.com/topjohnwu/Magisk



준비물이 준비됐다면,

1. 앞서 글 등을 참고해 부트로더를 언록한다. 폰이 초기화되니 데이터를 잘 백업해두자. PC에서 플랫폼 도구가 있는 폴더에서 다음 명령 사용.

adb reboot bootloader

fastboot oem unlock


2. 이제 재부팅하고 순정 boot.img를 폰으로 옮긴 다음 magisk로 그 파일을 패치한다. 그러면 magisk_patched.img 요런 파일이 생길 거임.


3. 그 파일을 다시 PC로 옮겨서 해당 부트로더로 부팅한다. 이게 임시로 루팅하는 방법의 핵심이다(혹시라도 루팅을 계속 유지하려면 boot 대신 flash boot를 쓰면 되지만... 그건 우리가 바라는 게 아니다).

fastboot boot magisk_patched.img

fastboot reboot


4. 폰을 재부팅하면 임시로 루팅된 상태다. 여기서 magisk를 실행하면 추가 설치가 일어난다. 재부팅하지 말 것.


5. 루팅된 상태니 구글 카메라를 사용하기 위한 Camera2 API 빌드프롭 수정을 해보자. 앞서 글에서는 루트 권한 때문에 termux 같은 앱을 깔라고 하지만, 굳이 그럴 필요는 없고 magisk의 설정에서 '셸'에 슈퍼유저 권한을 주면 된다(옛날에는 셸에서 루트 권한 없이도 빌드프롭 수정이 됐던 것 같은데 어쨌든 지금은 아니다). 그다음 adb로 셸에 들어가면 루트 권한으로 빌드프롭 수정이 가능하다.

adb shell

su -c "setprop persist.vendor.camera.HAL3.enabled 1"


6. 웹에는 빌드프롭 수정에 대해 여러 말이 많은데, 난 저 한 줄만 추가하는 걸로 충분하다고 결론을 냈다. eis 관련 항목을 추가해야 하나 고민했지만 A2 Lite는 기본적으로 eis가 켜져 있으니 추가할 필요 없고, 구글 카메라 포트에 따라 다를 수는 있겠지만 내가 설치한 포트는 잘 작동했으니 persist.vendor.camera.stats.test도 추가할 필요는 없을 듯하다.


과학적으로 Camera2 API가 활성화됐는지 확인하려면 빌드프롭 수정 전에 Camera2 API ProbeManual Camera Compatibility 같은 앱을 깔아서 실행해보자. 전자는 하드웨어 지원 수준이 LEGACY로 나오고, 후자는 모든 항목에 X가 뜰 것이다. 빌드프롭에 저거 한 줄을 추가한 다음 재부팅하고 다시 실행해보면 전자는 LEVEL_3으로 나오며, 후자는 모든 항목에 O가 뜬다.


7. 빌드프롭 수정 후 재부팅하면 빌드프롭은 수정됐으나 루팅은 풀린 상태다. magisk는 삭제하고, 다음 사이트에서 포트를 골라보자.

https://www.celsoazevedo.com/files/android/google-camera/


최근에는 안정화도 많이 된 모양이다. 난 그냥 제일 처음 떠 있는 게 최신이길래 DMGC_7.3.020_ver.4.3.apk를 받아서 설치했는데, 모든 기능이 아주 잘 작동했다.


순정 카메라는 걔대로 여전히 잘 작동했고, 오픈 카메라에서는 API를 Camera2 API로 변경이 가능했다.


앞서 글에서 부트로더 언록은 OTA에 영향을 미치지 않는다고 했고, 루팅된 상태도 아니니 다음 OTA는 아무 문제 없이 잘되리라 기대해본다. 혹시 안 되면 추후 업데이트.

-> 5월 말에 OTA 떴고 적용도 완료. 문제없다.






Posted by 필유

댓글을 달아 주세요

하드웨어2014. 7. 6. 02:40

루팅 후 system tuner로 각종 최적화를 적용한 뒤에 문제가 하나 생겼다. 전화가 오면 voipcall 앱에 오류가 생겨 종료한다며 전화가 그냥 끊어지는 문제였다...


...-_- -_- -_-


system tuner의 어떤 트윅 때문인지 하나씩 테스트해본 결과, 빌드프롭 최적화를 적용하지 않으면 해당 오류가 발생하지 않는 걸 확인했다.


...-_-?


그래서 빌드프롭 중에서 어떤 항목 때문인지 다시 테스트. 처음에는 통화 관련 항목이라고 생각했으나 웬걸... 원인은 달빅 힙사이즈였다.


LG G3(F400L) 10e 기준으로, build.prop 파일에 힙사이즈가 두 번 정의되어 있었다.


62행: dalvik.vm.heapsize=36m

358행: dalvik.vm.heapsize=512m


이런 글 등에서 볼 수 있듯 LG가 이런 짓을 한 건 처음이 아니다. 하지만 나름 최신 폰인데 이건 좀...


어쨌든 이 문제는, system tuner에서 빌드프롭을 최적화할 때 힙사이즈(62행)가 256m으로 수정되기 때문에 발생하는 것으로 보인다. system tuner의 해당 메뉴에서 힙사이즈를 다시 36m으로 바꾸고 재부팅하면 문제는 사라진다(즉 system tuner는 중복되는 항목에 대해서는 첫 번째 항목만 인식하는 듯하다).


그래도 의문점은 남는다. 항목이 두 번 정의된다면 뒤의 값을 취하는 게 아닌가? 즉 앞의 값이 무엇이든 상관없는 게 아닌가? 상식적으로 36메가라는 힙사이즈는 말이 안 된다(이 폰의 기본 heapgrowthlimit은 256m이다). 게다가 받는 전화에서만 오류가 나는 것도 신기하고. 참 알 수 없는 일이다.



Posted by 필유

댓글을 달아 주세요

하드웨어2014. 7. 1. 22:58

열라 까이고 있는 G3를 샀다. 2년간 쓰던 옵티머스LTE에 비하면 좋기만 하더라-_- 루팅 안 하고 런처 바꾸고 2주를 썼는데, 아무래도 눈에 밟히는 것들이 있다. 가령 '스마트 알리미'라든가, 'Q메모'라든가...


폰도 하드웨어가 발달하며 성능 면에서 루팅의 이점은 없다고 봐야 할 것 같다(불과 2년 사이에!). 그럼에도 루팅을 하는 이유는 하나다.


통신사 앱 삭제.


물론 UX 면에서도 이점이 있다(가령 Xposed라든가, AdAway라든가). 매크로(나는 국산 앱인 The Toucher를 쓰고 있다)도 돌릴 수 있고. 그리고 앞서의 말과 모순되지만, 여전히, 성능을 극한까지 끌어낼 수 있다는 사실은 매력적이다(System Tuner로 잠든 CPU 부활).


이제부터 본론.


*아래 방법은 실패했습니다. OTA 안 됩니다! 해외에도 아직까지 알려진 방법 없습니다!



1.

G3 루팅은 아래 글처럼 하위 기종들처럼 하면 된다길래, 나도 이렇게 했더니 쉽게 됐다.

http://forum.xda-developers.com/showthread.php?t=2766429



2.

루팅 후 System Tuner로 앱 정리하고 빌드프롭 등을 트윅했다. System Tuner를 쓰는 이유는, 여러 개의 앱을 까는 대신 단 하나의 앱에 모든 최적화를 맡기기 위해서다. G3의 경우 (옵티머스LTE보다는-_-) 체감 성능이나 UI가 괜찮은 편이라 특히 더 다른 앱을 깔 생각은 들지 않았다(Xposed 말이다).



3.

그런데 루팅하고 나서 하루 지나 소프트웨어 업데이트를 눌러봤는데, 10g가 나왔다고 한다-_- 내가 산 폰(LGU)은 10e. 업데이트(OTA)를 시도해봤으나 역시나 실패. LG PC Suite로 하라길래 해봤더니 최신 버전을 쓴다는 헛소리만 나옴.


원인은 다음 글에서 찾을 수 있다. 요지는 프레임워크 쪽을 건드리면 OTA가 안 된다는 거.

http://www.clien.net/cs2/bbs/board.php?bo_table=use&wr_id=640284



4.

그래서, 결론은 이렇다. SuperSU를 삭제하고, System Tuner에서 모든 트윅을 끄고 재부팅하면, 루팅은 유지된 상태에서 OTA가 된다. OTA 후에는 System Tuner에서 다시 트윅을 적용하면 된다.


결론2. 최적화 앱은 System Tuner 하나로 족하다. 관리도 쉽고.




Posted by 필유

댓글을 달아 주세요