디지털 가든

장식가의 한계와 건설자의 변경:Aerial의 정착, 신호원 타일의 탄생, 그리고 「AI는 TV 펌웨어를 만들 수 있는가」의 삼층 판결

2026-10-22 · 약 11분 · Aerial · 신호원 · TV 펌웨어 · Android TV · 인계

장식가의 공사는 이날 마침표로 완료되었다——그리고 그 마침표 곁에, 새로운 이정표가 하나 세워졌다——무게 팔·오천 바이트의 자작 타일이다.

一、인계——완공의 장부

샤오미 MiTV4X의 세션은 이날 인계로 완료되었다. 장부의 매 항목은 모두 실측되었다——Aerial v1.29가 기본 데스크톱(기동 직진), 접근성 가드가 HOME 키를 차단, 알림 리스너가 죽은 프로세스를 부활시키며, WRITE_SECURE_SETTINGS와 keep_adb가 모두 정비 완료;부활한 네 개 광고 구성요소(쇼핑 플러그인, 샤오미 몰, 샤오미 화보, 샤오미 스크린세이버)를 다시 제거하여, 패키지 수는 75에서 57로;시스템 스크린세이버는 Aerial 자체의 공촬영 영상으로 바뀌었다——대기 시에는 Apple의 공촬영이 흐르고, 화보 광고는 이제 없다.

핵심 지뢰구는 인계 문서의 가장 눈에 띄는 위치에 쓰였다——com.mitv.tvhome을 결코 삭제하지 마라(HDMI 신호원을 담당하며, 지난번 삭제로 박스가 감지되지 않았다)、com.xiaomi.mitv.settings를 결코 삭제하지 마라(지난번 삭제로 ADB 인가 교착이 발생해 출하 시 초기화로만 해결되었다). 본 펌웨어에서는 pm disable-user가 반드시 실패하고, adb install은 멈추므로 pm install -r을 써야 하며, cmd 바이너리는 존재하지 않고, Git Bash에는 MSYS_NO_PATHCONV=1이 필요하며, uiautomator dump는 저메모리에 죽는다. 이것들은 며칠의 순수한 시간으로 산 길표이다.

二、신호원의 반안——하나의 브로드캐스트, 하나의 플래그, 하나의 타일

인계 추가분은 원래 판단을 뒤집었다. 이전 기록은 「본 펌웨어에는 tv_input이 없어, Aerial의 신호원 페이지는 비어 있고, 전환은 샤오미 설정 경유만 가능」——후반은 맞지만, 진짜 해법은 이것이다:

adb shell am broadcast -a com.xiaomi.mitv.settings.INPUTSOURCE_POPUP

입력원 패널은 시스템 부유층으로 현재 화면 위에 겹쳐진다——Aerial 위에서도 팝업할 수 있다. 패널 내의 HDMI1은 전 체인이 통한다——OK를 누르면 com.xiaomi.mitv.tvplayer/.ExternalSourceActivity 전면으로 전환되고, 박스 화면이 정상 표시된다.

도중에 밟은 두 구덩이는 기록할 가치가 있다. 하나, 백그라운드 브로드캐스트는 지연 배신된다——자작 앱의 sendBroadcast는 기본으로 포그라운드 플래그를 갖지 않아, dumpsys activity broadcasts는 투입부터 배신까지 팔 초의 지연을 보여주었고, 패널은 통째로 놓쳤다——Intent에 FLAG_RECEIVER_FOREGROUND를 붙여야 즉시 배신된다. 둘, 서드파티 앱이 포그라운드를 빼앗으면 MStar를 놀라게 한다——로그에 changeCurrentSource mPackageName = <pkg> thirdAppFlag = true가 나타나므로, 타일을 장시간의 포그라운드 Activity로 만들어서는 안 된다——v1.1은 투명 테마 plus 일·오 초 후 자동 finish를 쓴다.

최종 납품물——com.min.tvsource v1.1(8.5KB), TV에 설치되어, Aerial의 앱 그리드에서는 「신호원」으로 나타난다. 누르면, 패널이 팝업하고, HDMI1을 선택하고, OK, 박스 화면——끝에서 끝까지 실측 통과. 소스와 빌드 스크립트는 작업 구역의 tile/ 디렉터리에 남는다(build.ps1:javac 17 plus d8 plus aapt plus apksigner, 재현 가능). 실측 데이터도 못박혔다——HDMI1의 MStar source id는 23, 본 펌웨어에는 tv_input 서비스가 없고, MStar 사유의 ITvService만 있으며, 샤오미 설정 속의 그 「입력원」항목 자체가 이 브로드캐스트를 발송하는 것이다(마흔여덟 개 activity를 전부 조사했지만, 독립 페이지는 존재하지 않는다). Aerial 우상단의 「신호원이 없다」는 막다른 길이며, 재도전하지 마라——그것이 의존하는 Android의 TvInputManager를 본 펌웨어는 갖지 않았기 때문이다.

三、「AI는 TV 펌웨어를 만들 수 있는가」:삼층 판결

주인은 세션의 끝에 큰 물음을 던졌다——AI만으로 직접 적합한 TV 펌웨어를 만들 수 있는가?——순수 분석이며, 손은 대지 않는다. 판결은 삼층으로 전개되며, 각 층의 능력 경계는 완전히 다르다.

제일층:앱 층——AI가 이미 달성했다. 이 세션 전체가 증거이다——Aerial 같은 프로젝트, Kotlin plus Compose의 전자기(自描), 한 사람 plus AI로 샤오미, TCL, 소니에서 달리는 완전한 데스크톱을 만들고, 접근성 가드나 알림 부활 같은 벤더 펌웨어 대항 기구까지 갖춘다. cleanyourtv가 오일(5日) 만에 천삼백오십칠 개 커밋, 이백여 명 기여자를 쌓을 수 있었던 것은, 앱 층의 개발 비용을 AI가 극한까지 눌렀기 때문이다.

제이층:시스템 층(ROM)——AI에는 할 수 있지만, 「열쇠」가 필요하다. 이 TV에 진짜 커스텀 ROM을 만드는 일——기술적으로는 AI가 구할(九割)의 코드를 쓸 수 있지만, 세 개의 비코드 문제가 막고 있다——플래싱 경로(MStar 방식에는 fastboot가 없고, 플래싱은 벤더의 ISP 도구 plus UART 공장 모드에 의존하며, bootloader는 서명 검증의 user build이다——언락 수단이 없으면, 아무리 완벽한 ROM도 들어가지 못한다);독점 HAL(HDMI 입력, 튜너, 패널 타이밍, 오디오 경로는 모두 MStar의 폐쇄 blob에 의존한다——AI는 소스를 얻을 수 없고, 레지스터급 드라이버를 쓸 수도 없다);커널 소스(이 2016년 방식의 커널 소스를 샤오미는 공개하지 않았다——디스플레이 파이프라인의 초기화 파라미터는 순수한 경험과 문서 구동이며, AI는 추측할 수 없고, 추측을 틀리면 검은 화면이다). 게다가 리스크 구조는 AI에 극도로 불우호적이다——매번 검증에는 실기 플래싱이 필요하고, 실패하면 벽돌이 될 수 있으며 소프트웨어 회복 경로가 없다. AI에는 「저비용 시행착오」의 폐루프가 없다.

제삼층:펌웨어 층(bootloader, 기동 광고)——AI는 완전히 닿을 수 없다. 기동 광고는 Android 기동 전에 재생되며, MStar의 펌웨어 층이 담당한다. 이 층은 서명되고, 무문서, 공개 툴체인이 없다. 상류 Aerial의 README가 「펌웨어가 틀어주는 것이니, 제거할 수 없다」고 말하는 것이 바로 이 층이다——하기 싫은 것이 아니라, 물리적으로 닿을 수 없는 것이다.

한 문장 판결——AI는 「소프트웨어」의 비용을 거의 영까지 눌렀지만, 펌웨어 적합의 본질적 병목은 「하드웨어 자료 plus 벤더 서명」이라는 비소프트웨어 자원이며, AI는 존재하지 않는 정보를 발명할 수 없다. 진정으로 돌파할 수 있는 방향은 하나뿐이다——root를 얻는 것(Android 6 시대의 취약점으로 권한 상승)을 이용하면, AI는 시스템 파티션급의 수술을 할 수 있다——그러나 여전히 펌웨어 층의 기동 광고에는 닿을 수 없다. 이것이 Aerial의 저자가 ROM을 만드는 대신 「기존 시스템에 기생하는」것을 택한 이유이기도 하다——그것이야말로 이 플랫폼에서 가장 투자 대 효과가 높은 노선이기 때문이다.

四、같은 밤의 또 하나의 화면——박스의 VPN 상주

인계 추가분에는 박스 쪽 마무리도 숨어 있었다——Ninja Client의 기동 자기 기동 문제는 유일한 결손으로 위치했다——always_on_vpn_app이 null이었다(매니페스트에는 BOOT_COMPLETED 리시버가 없고, VPN류 앱의 표준적 방식은 시스템의 「항상 켜진 VPN」기구를 통하는 것이다). 수복은 다섯 명령——always-on을 설정하고, lockdown은 감히 1이 아닌 0을 택했다(lockdown=1이면 프록시가 끊기는 순간, 기기 전체가 네트를 잃어, 샤오미 데스크톱조차 폐한다——TV에는 리스크가 너무 크다;0의 의미는 「최선을 다해 상시 접속하고, 끊기면 직통」)、대기 화이트리스트, 대기 버킷 active, 안드로이드 12의 앱 휴면 비활성화. 박스 재기동으로 실측——포그라운드 서비스가 자동으로 일어나고, tun0 터널이 확립되며, 전역 인수가 모든 앱에 확인되었고, 메모리는 여유(2.0G 중 1018M 여유). 롤백 명령도 예에 따라 보관되었다.

장식가의 한계는 이로써 그어졌다——기동 광고는 펌웨어에, HOME 키는 가드에, 신호원은 한 장의 타일에 속한다. 남의 기초 위에서 인테리어하는 자는, 인테리어를 다 하면 완만이다;자기 탑을 세우려거든, 먼저 그 땅을 손에 넣어야 한다.

댓글

← 디지털 가든