원문 : https://wiki.lineageos.org/devices/gta4xlwifi/install

롬을 빌드하거나 https://download.lineageos.org/gta4xlwifi에서 두 개 다운로드

이미 oem언락 된 상태라면 1~3 과정은 생략

1. adb 디버그 허용, oem 언락 허용(빌드버전 연타하면 나옴)

2. 파워 off 후 볼륨 상 + 볼륨 하(One UI 3.0이상,보통 안드로이드11버전)를 동시에 누르면서, 1초후에 usb를 연결한다. (연결되어있는 상태면 안되고 타이밍 맞게 연결해줘야됨) 잠시 후 다운로드 모드로 진입하게 된다.

볼륨상을 길게 눌러 부트로더 언락을 진행한다.

3. 초기화 완료되면 다시 빌드버전 연타한 후 oem이 언락되어 있는지 확인

4. https://androidfilehost.com/?w=files&flid=304516 heimdall 다운로드

5. 2번처럼 한 후에 언락이 아닌 볼륨 업을 한번만 누른 후 다운로드 모드로 진입. 이후 Zadig를 실행 (https://github.com/pbatard/libwdi/releases)

Options->List All Devices 클릭

반드시 다운로드 모두 진입 후 실행해야 목록에 Samsung USB Composite Device or Gadget Serial이 보임

보이는 것중에 하나 선택하고 Replace Driver를 클릭

만약 Gadget Serial이 두 개 보인다면 둘다 해보는 수 밖에 없음

6. cmd 실행

heimdall print-pit

장치가 재부팅 되는지 확인

7. usb 연결 상태에서 다운로드 모드 진입 후(5번 참고) cmd 실행

heimdall flash --RECOVERY lineage-18.1-20220413-recovery-gta4xlwifi.img --no-reboot

8.  볼륨 다운 + 파워를 8~10초간 누르고 있다가 손 뗌

9. 재부팅 되면 usb연결 후 볼륨 업 + 파워로 리커버리 모드 진입  

(녹스 워런티 깨졌다고 경고 창 뜨면 그 상태에서 볼륨 업 + 파워 길게 눌러주면 됨)

10. Factory Reset -> 3개 전부 실행

11. 메인 메뉴로 이동 후 Apply update-> apply from adb 선택 후 cmd 실행

adb sideload lineage-18.1-20220413-nightly-gta4xlwifi-signed.zip

adb sideload open_gapps-arm64-11.0-pico-20220215.zip (https://opengapps.org/ 에서 다운로드)

adb sidelaod Magisk-v21.4.zip (https://github.com/topjohnwu/Magisk/releases/download/v21.4/Magisk-v21.4.zip 다른 버전 받으면 안돼서 고생 좀 할것임)

adb shell에서만 su가 필요하다면, Magisk를 설치하지 말고 개발자 옵션에서 "디버깅 시 루트 권한 사용" 체크 후 adb root -> adb shell로 접속

12. 재부팅

이 방식을 사용하면 바로 태블릿에 설치 가능한 형태로 빌드된다.

커널 소스 혹은 defconfig를 수정한 후 사용하고자 할 때 유용하다

빌드 방법 원문 : https://wiki.lineageos.org/devices/gta4xlwifi/build

0. vm에 ubuntu 18.04.6 설치 (하드 용량은 넉넉히 500기가 정도)

200기가로 빌드 불가능했음

램은 20기가 정도 설정

1. 의존 패키지 설치

sudo apt-get install openssh-server libwxgtk3.0-dev bc bison build-essential ccache curl python flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev vim

2. adb 설치

https://dl.google.com/android/repository/platform-tools-latest-linux.zip

unzip platform-tools-latest-linux.zip -d ~

~/.profile에 아래 추가

# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/platform-tools:$PATH"
fi

3. 디렉토리 생성

mkdir -p ~/bin
mkdir -p ~/android/lineage

4. repo 설치

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
git config --global user.email "abc@lol.com"
git config --global user.name "kim kim"

5.

export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache

6. ~/.bashrc 에 아래 추가 

ccache -M 50G

source ~/.profile 실행

7. 리니지OS 소스 전체 다운로드 (OS+소스 =  기가)

cd ~/android/lineage
repo init -u https://github.com/LineageOS/android.git -b lineage-18.1
repo sync

8. 갤럭시 탭 S6용 커널 다운로드

source build/envsetup.sh
breakfast gta4xlwifi

중간에 vendor 어쩌고 Makefile에러가 발생하면 9번 항목 실행후 breakfast 재시도

(대부분의 makefile에러는 make clean과 breakfast반복으로 해결 가능)

breakfast중 sepolicy.mk 에러가 발생한다면

cd ~/android/lineage/device
mkdir samsung_slsi
cd samsung_slsi
git clone https://github.com/LineageOS/android_device_samsung_slsi_sepolicy
mv android_device_samsung_slsi_sepolicy sepolicy

이 후 make clean 후 breakfast 재시도

9. ubuntu vm에 태블릿 연결 후 태블릿에서 충전이 아닌 PTP로 설정

주의 : adb shell에 su권한이 없으면 파일 복사를 실패함 -> 개발자 옵션에서 디버깅 시 루트 권한 사용 반드시 체크

cd ~/android/lineage/device/samsung/gta4xlwifi
./extract-files.sh

10. 커널 보호 기능 해제

~/android/lineage/kernel/samsung/gta4xl/arch/arm64/configs​/exynos9611-gta4xlwifi_defconfig 편집

아래의 각 라인을 찾아 y를 n으로 수정

(그외 참조 : https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)

CONFIG_EXYNOS_KERNEL_PROTECTION=y  
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
CONFIG_EXYNOS_CONTENT_PATH_PROTECTION=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=n

https://codetronik.tistory.com/155 참조하여 소스도 수정하여야 한다.

11. 빌드

cd ~/android/lineage
source build/envsetup.sh (커널소스 재빌드 시)

brunch gta4xlwifi

12. 출력 파일 확인

cd $OUT

존재 여부 확인 : recovery.img / lineage-18.1-20220418-UNOFFICIAL-gta4xlwifi.zip 

13. 태블릿에 롬 설치 후 adb shell 접속 후 dmesg > grep exynos로 아래의 로그가 뜨는지 확인 (뜨면 defconfig 수정 실패한 것임)

[    0.371387] exynos_protect_kernel_text: Kernel text start VA(0xffffff8008188000), PA(0x80188000)
[    0.371398] exynos_protect_kernel_text: Kernel text end VA(0xffffff8008e28000), PA(0x80e28000)

0. ubuntu 20.04.4 LTS x64

1. 의존 패키지 설치 Install Dependent Packages (defconfig 및 menuconfig 빌드를 위함)
sudo apt-get install build-essential libncurses5-dev python

2. 커널 소스 다운로드 Download the appropriate kernel source for your device.
Galaxy Tab S6 Lite : git clone https://github.com/LineageOS/android_kernel_samsung_gta4xl

3. 크로스 컴파일러 다운로드 후 경로 설정 Set path after downloading cross-compiler
git clone https://github.com/Shubhamvis98/toolchains

export PATH="/home/code/toolchains/clang-r428724/bin:/home/code/toolchains/aarch64-linux-android-4.9/bin:$PATH"
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-android-
export CLANG_TRIPLE=aarch64-linux-gnu-

4. 커널 소스 디렉토리로 이동 Go to the kernel source path
make clean
make mrproper
make exynos9611-gta4xlwifi_defconfig
make menuconfig  -> 실행 후 <Save> 클릭 

5. 컴파일 Build it
make -j16 CC=clang

6. 커널 소스 수정 (오류 발생 시) Modifying kernel sources (in case of error)
Open Makefile


KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
   -fno-strict-aliasing -fno-common -fshort-wchar \
   -Werror-implicit-function-declaration \
   -Wno-format-security \
   -Werror \    <------------- 해당 라인 삭제 delete this line
   -std=gnu89

1. 옵션->빌드 버전에서 현재버전 확인 후 각 버전에 맞는 펌웨어 다운로드

(11버전의 2021.03 펌웨어 P610XXU2CUC3 에서 루팅 확인)

samfw.com/firmware/SM-P610/KOO

https://samfrew.com/model/SM-P610/

2. adb 디버그 허용, oem 언락 허용(빌드버전 연타하면 나옴)

3. 파워 off 후 볼륨 상 + 볼륨 하(One UI 3.0이상,보통 안드로이드11버전)를 동시에 누르면서, 1초후에 usb를 연결한다. (연결되어있는 상태면 안되고 타이밍 맞게 연결해줘야됨) 잠시 후 다운로드 모드로 진입하게 된다.

볼륨상을 길게 눌러 부트로더 언락을 진행한다.

4. 초기화 완료되면 다시 빌드버전 연타한 후 oem이 언락되어 있는지 확인

5. ap.tar에서 boot.img.lz4만 추출후 압축해제 후 magisk manager설치 후 boot.img만 패치

그 후 아래의 명령어로 다시 압축 

c:/> lz4 -B6 --content-size boot.img boot.img.lz4

boot.img.lz4를 원본 ap의 boot.img.lz4에 덮어쓰고 다시 tar로 압축

 

lz4_win32_v1_9_3.zip
0.32MB

6. 파워 off후 다시 다운로드 모드에 진입한다. odin 실행 후 패치한 ap선택 후 tar파일을 선택하여 start를 누른다.

bl, csc(home_csc지정) 도 같이 설정해줘야 한다.

반드시 oem lock이 off 상태인지 확인한다. on이면 2부터 다시 반복한다.

Odin3-v3.14.4.zip
4.20MB

7. odin이 성공하면 몇번 재부팅되면서 실행되는데, 만약 try again, reset 하는 화면이 뜨면 reset한다.

이 과정을 거치고 화면이 보여진다면 다시 태블릿을 종료하고, 파워+볼륨상을 길게 눌러 리커버리 모드로 진입한 후에

wipe data/factory reset  과 wipte cache partition을 실행한다.

(안하면 내장 메모리 용량이 16기가로 인식됨)

아래 항목은 실패 시 참조

만약 에러가 발생하면 파워 + 볼륨하 버튼을 누르고 있는다.

태블릿 초록색 화면에 "An error has occurred while updating the device software. Use the Emergency recovery function in the Smart Switch PC software." 에러가 발생하면 아래의 프로그램을 설치한다.

Frp Hijacke rV1.0 setup.rar
1.12MB

위처럼 입력후 HIJACK IT!을 누르면 재부팅이 된다.

태블릿이 공장 초기화 상태로 되는데, 더이상 oem잠금해제가 보이지 않게 된다. 설정->일반 에서 "날짜 및 시간 자동 설정"을 비활성화 후 날짜를 현재 날짜에서 1달전 쯤으로 설정한다. 그다음 소프트웨어 업데이트를 시도하면 oem 잠금해제가 보이게 된다.

만약 다른 에러로 무한 다운로드 모드 상태가 지속된다면, 패치하지 않은 순정 ap, bl, home_csc펌웨어를 odin으로 올린다.

 

레퍼런스

forum.xda-developers.com/t/sm-p610-flash-only-official-released-binaries-are-allowed-to-be-flashed-recovery.4214009/

forum.xda-developers.com/t/howto-unlock-and-root-the-galaxy-tab-s6-lite.4132289/

+ Recent posts