Amlogic S905 Set-top box T95N M8S 2G/8G

최근에 리눅스 머신 구매를 고려하던중 ODROID C2 와 같은 MCU인 Amlogic S905를 사용한 셑탑박스를 구매 하였다 (http://www.aliexpress.com/item/New-T95N-Mini-M8S-Pro-m8spro-Android-5-1-TV-Box-S905-Quad-Core-Bluetooth-Wifi/32670305568.html?spm=2114.13010608.0.97.YhH49H 무려 35$)
배송은 알리를 통해 1주일 걸렸고 상세 스펙은 다음과 같다.

CPU: Amlogic S905 quad-core cortex-A53 frequency 2.0G
GPU: Mali-450 5-Core GPU
RAM: 2GB DDR3
ROM: 8GB eMMC Flash 5.0 (Read 80MB/s above, Write 20MB/s above)
OS: Android 5.1
KODI: 16.0 Pre-installed and Play Well
Support 4kx2k H.265 Hardware Video Decode and 4Kx2K Output
Bluetooth 4.0
Ethernet: 10/100M,  RJ-45

더 저렴한 제품(RAM 1G)이나 좀더 비싼제품 (Giga Ethernet)이 있었지만 그냥 대충 싼게….
ODROID C2와 비교했을때
C2는 아답터, EMMC, 리모컨, HDMI케이블, 케이스 별매 지만
(각 6,600, 21,600원, 4,800원, 4,400원 , 5,400원 VAT별도, tot :4만5천 정도)
USB 슬롯 4개, Gigabit ethernet, 좀더 거대한 방열판, GPOI 포트와 커뮤니티의 지원이 비교적(?) 활발한 장점을 가지고 있다(하지만 가격이 깡패다 C2살 돈이면 셋탑 두개사고 국밥한그릇 먹을수 있다)

e480721d87b0270bee2950924e7f735b

1

받아보니 크기가 생각외로 매우 작았다.
어댑터가 EU 플러그라 그런지 조금 많이 헐겁다. 쓰기 굉장히 불안하게 생겼다 (왠지 쓰다보면 폭발할듯)
다행인지 USB포트를 통해 전원공급이 가능하였다(USB A male to USB A male 케이블 쓰면 된다)
더불어 샤오미 보조배터리 하나면 ODROID에서 6만원에 파는 UPS3을 대신할수있다. 가격도 싸고 용량도 크다

UART

켜보지도 않고 분해를 진행하였으며 목표했던 UART 단자를 찾았다(친절하게 프린팅 감사)

5f6206a15a5b11d863f0dd97e3814415cb7244b6c6cf70ccc9e9b2ed565589de

UART를 찍어보면 아래와 같은 로그가 나온다 (115200bd, 안드로이드 부팅로그 제외)

부팅 도중 키입력을 하게되면 u-boot 쉘로 빠지게 된다.

u-boot이  bootcmd 커맨드를 자동으로 실행되어 storeboot을 실행하게 되고 여기서 bootargs 를 설정하고, dtb를 읽고, 커널 읽고 bootm 을 통해 android를 부팅하는것을  확인할 수 있다.

안드로이드 부팅하면 root쉘이 자동으로 떠있다.
EMMC가 mmcblk0 으로 잡혀있고 mSD가 mmcblk1로 잡힌다
혹시 모를 상황에 대비해 전체 덤프 뜨고 c2용 armbian을 올렸….는데 부팅이 안된다. AHHHHH

Recovery / Debrick

인터넷 뒤적뒤적하니
http://forum.androidgadget.co.uk/showthread.php?tid=139
http://freaktab.com/forum/tv-player-support/amlogic-based-tv-players/s802/eny-acemax-ott/20156-help-ott-m8-bad-flash-recovery-using-shorted-nand-pins
이런 저런 신공으로 NAND에 호작질하여 복구한 것을 발견했는데….. 내가 구매한건 보드 레이아웃이 완전 다르다…….
데이터 시트를 보니 RCY가 0이 아니고, 2가 아닌경우 또는 모든 부팅 디바이스가 감지되지 않으면  USB Boot 으로 빠진다.4아마 NAND 쇼트 시키는거도 NAND 감지 못하게해서 USB Boot으로 빠지게 하는것으로 추정하고 eMMC 죽일 각오하고(데이터 시트에 따르면, 어차피 죽어도 SD 카드로는 부팅가능ㅋ) eMMC 주변의 핀들을 쇼트 시켰더니 컴퓨터에 idVendor=1b8e, idProduct=c003로 인식되었다.

tsopKakaoTalk_20160710_205008262NC랑 IO부분이랑 쇼트하면서 전원넣으면 된다.  (사진은 180도 돌아가있다, NC는 Not Connected 인데 이상하게 GND에 연결되어있다) 불꽃놀이 이스터에그 보고싶으면 Vcc, Vss 쇼트하면 된다
정상적인 입출력을 방해해서 NAND 또는 eMMC 통신을 막는것으로 추정된다

이후 윈도우에서 AMLOGIC_TOOL_setup_v2.0.5.15로 원본 펌웨어 플래싱하면된다
아래는 셀러를 통해 받은 오리지널 펌웨어 (AML BURN IMAGE 형식인듯?)
https://mega.nz/#F!5gMHBSyZ!MklQLG9LSnRzu8f5T9rqBw

이제 맘껏 죽여도 된다 (BL0을 건들수 있을진 모르겠지만 BL0 건들면 이방법도 답없을듯..)

ARMBIAN

이번엔 armbian을 eMMC가 아닌 SD카드에 구웠다. (dd명령어 이용)
두개의 파티션이 존재하며 파티션의 시작은 1049kB부터이다

1번째 파티션에 부팅관련 이미지들, 2번째 파티션에는 Rootfs가 존재한다
이를 u-boot을 통해 부팅시키기 위해서 u-boot shell 에 접근하여 아래와 같이 타이핑(복붙안됨 아니 되는데 setenv 따로 fatload 따로 booti 따로 해줘야된다, 귀찮..)

우왕ㅋ 부팅 잘됨 ㅋ굳

이걸 영구히 eMMC에 넣어줄려니까 자꾸 BOOT 쪽이 깨져서 플래싱하는 경우가 생긴다
확인해보니 eMMC의 경우 파티션 영역이 부트영역에 저장되어있다 GPT, MBR 이런게 아니라 MPT(MMC Partition Table)라고

관련 코드는 AML u-boot source의 include/emmc_partitions.h, drivers/mmc/emmc_partitions.c 에 존재한다
적당히 저부분 수정 샥샥 해주고 부팅하니까 적용은 되는데 SPL 영역의 데이터와 다르다면서 다음 부팅에서는 다시 복원해버린다 -_-;
MPT부분 싹 날리고 부팅하니…… 안된다 부팅이 ….. u-boot 진입은 되는데 아예 파티션을 못찾는듯(SPL에서 복구하면 되잖아?)

U-boot Compile

linux-3.14-buildroot-pkg-201605-release-v1.2.pdf 9페이지 보면 툴체인 잘 구성하라고 나와있다

CodeSourcery.tar.gz
gnutools.tar.gz
gcc-linaro-aarch64-none-elf-4.8-2013.11_linux. tar

잘 받아서 잘 구성해주자.
$ tar zxf CodeSourcery.tar.gz -C /opt
$ tar zxf gnutools.tar.gz -C /opt
$ tar xf gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar -C /opt
$ export PATH=$PATH: /opt/gnutools/arc2.3-p0/elf32-4.2.1/bin: /opt/CodeSourcery/Sourcery_G++_Lite/bin:/opt/CodeSourcery/Sourcery_G+ +_Lite/arm-none-eabi/bin:/opt/CodeSourcery/Sourcery_G+ +_Lite/arm-none-linux-gnueabi/bin:/opt/gcc-linaro-aarch64-none-elf-4.8-2013.11_li nux/bin/

u-boot 소스는 여기 uboot-2016-05-04-1fdf4683a5.tar.gz
make gxb_p200_v1_config 해주면 컴파일 잘된다.
잘 안되면 arch/arm/cpu/armv8/gxb/firmware/scp_task/Makefile 부터는 크로스 컴파일러를 CodeSourcery에 있는 컴파일러를 사용하게 지정해주면 된다.
mmcblk0에 fip/gxb/u-boot.bin을 올려주고 reboot을 하면 나의 uboot으로 부팅이 된다.

근데 여기서 다시 재부팅하면……….. 부팅이 안된다.

low task start! 찍고 멈춰버린다. 로그를 보면 bl30이 제대로 올라가지 않은것으로 확인된다.(안올렸다!)

부트로더가지고 이것저것 하는거 지쳐서 그냥 microSD 카드에 OS넣고 부팅하기로 하였다.
uboot에서 아래의 명령어를 입력하면 microSD카드로 자동부팅하게된다

 

근데 부팅할때마다 MAC이 바뀐다…

 


번외
bl2  Trusted Boot Firmware BL2
bl30  SCP Firmware BL3-0
bl301  SCP Firmware BL3-0-1
bl31  EL3 Runtime Firmware BL3-1
bl32  Secure Payload BL3-2 (Trusted OS)
bl33  Non-Trusted Firmware BL3-3

 

 


작성중 (업데이트 될거야 언젠간)

One thought on “Amlogic S905 Set-top box T95N M8S 2G/8G”

Leave a Reply

Your email address will not be published. Required fields are marked *