SM T-705C LineageOS 移植

2017-12-19   CS&EE

Update3:
详细说说基带不能运行的问题吧。
对于MDM9x25,三星使用的是Flashless Boot的方案,即基带自身不带任何Flash,而初始化的时候,通过ks桥和HSIC片间USB桥上传基带固件和EFS信息,SoC与基带以SAHARA协议通讯感兴趣的话可以参考一下第三方写的 SAHARA 通讯工具

https://github.com/openpst/sahara
如图所示,图中是一个Exynos5433+MDM9x25的方案,推测是魅族的设计?不过仍然有参考价值。
9x15-hsic.png

有工程师之前针对这套平台的笔记:http://blog.csdn.net/hongzg1982/article/details/54884883
不过不同的是T705C与他笔记中的设备采用了不同的软件方案。
他的笔记中采用的是高通较新的ESOC方案,内核也有DeviceTree(扁平设备树)支持。Userspace中有一个mdm_helper 一个daemon管到底,从启动的上传到电源管理到modem传输。
T705C的Exynos5420则诞生在Linus还没喷ARM社区的时代,DeviceTree还没在ARM设备间大范围使用,而后来Exynos5420的Bootloader也就顺理成章的没支持DeviceTree,所以T-705C采用的则是高通的leagcy方案。在内核里mach-exynos下塞了HSIC驱动,没有使用高通的通用驱动。(三星的代码脏的我不想说话了,有精力的话我想选择彻底重构,然而时间是硬伤)。用户空间则是使用了高通的好几个二进制来控制。包括qcks这个启动控制daemon,以及quxd来负责日常控制。qcks在进行初始化的时候,则会召唤 /system/bin/ks_9x15 走/dev/ks_hsic_bridge来上传几个mbn firmware来让基带开始工作。基带初始化之后,内核会重新注册这个HSIC设备为/dev/efs_hsic_bridge ,然后qcks再call /system/bin/efsks 来同步EFS信息。 这个过程可以参考那一篇笔记。而这些二进制程序文件全部是从原设备固件中提取出来放到LineageOS里的。

然而现在问题出在ks_9x15上。每次ks_9x15开始上传固件,就会内存溢出。因为这是高通与三星的专有软件,不可能开放源代码,二进制文件也被strip过,所以现代的Debug工具都没什么大用。在检查了库依赖版本,链接器这些问题之后,我选择暂时不继续尝试(因为也临近开学了)。

如果要Debug这个文件,那么可能比较可行的方法就是做MemoryDump,之后用IDA反汇编修改一下。因为这种问题十有八九是因为Bionic或其他库 API的变化导致“二进制”不兼容。

当然在这之前我还要仔细检查一下内核里两个Bridge的代码,不确定是不是桥给了非法的回复。

Update2:
理性超频,如果温度过高被强制关机的话可能会开不了机,插一下充电器就好.

Update:
希望各位有条件刷的话能给一个反馈,未知Bug说一声,因为除了指纹和基带的问题其他Bug都会影响LineageOS一整个Exynos5420的设备,这些Bug要修。

大家没看错,就是T705C
本人高中生一个,暑假的时候做了点LineageOS的移植,拿手上的T705C做实验,大部分提交给了XDA开发者的http://www.exynos5420.com ,现在发出来
设备名klimttd
目前Bug:
基带没运行,高通qcks的ks_9x15死活内存越界,懒得调了,也就是说SIM卡和GPS无效,当个WiFi平板用吧。
指纹不工作:因为三星自带的指纹库没有用Android N的API,所以重写起来工作量很大,不搞了。Exynos5420的设备没有哪个LineageOS有官方指纹支持的

特性:
声音优化(感谢XDA UpOnAir的内核魔法)
Kernel Hack(使用bfq作为Block Device调度器,同时支持了一堆CPU调度器)
相机优化(用了Exynos5420目前为止最新的相机库和Firmware,比705C原系统的Firmware和库高出了好几个版本,似乎弱光有提升)
WiFi优化(用了Broadcom的国际版固件,解除了中国的发射功率限制,解决了之前断流的问题)
超频支持:用附带的Deathly Adiutor可以超频CPU(最高2100Mhz)和GPU,也可以调整电压,还有充电功率,耳机设置,多核省电这些功能,各位慢慢研究吧。
漏洞修复:Linux 内核这段时间没少爆CVE,该修的Patch都修了

要求:配合至少Android M的底包,Android L的Bootloader不可以,会bootloop
仅在TWRP 3.0以上测试过,请自行刷入klimtlte(T-705)的TWRP,下载地址:https://dl.twrp.me/klimtlte

卡刷包:
可以去Exynos5420那里:https://download.exynos5420.com/LineageOS-14.1/klimttd/ 下载
太慢的话我也做了百度云备份:链接: https://pan.baidu.com/s/1mi1OxE4 密码: 331b

开源信息:
设备树:https://github.com/exynos5420/android_device_samsung_klimttd
内核:https://github.com/exynos5420/android_kernel_samsung_exynos5420

Google服务:
自行寻找armv7l版opengapps sdk25 android7.1
http://opengapps.org/

Root:
卡刷Magisk即可(个人不推荐SuperSU,当然经测试也是可用的)
Magsik可以参见OnePlus的教程:http://www.oneplusbbs.com/thread-3302341-1-1.html

Xposed未经测试,同时强烈建议不要刷第三方内核(话说回来705C除了我的还有别的第三方ROM吗)

虽然内置了OTA 但不出意外的话我应该不会发什么更新了

标签: Linux Android ARM Exynos

上一篇:Linux Loongson-2的一点记录 下一篇: 龙芯Spectre 漏洞PoC的移植测试


评论卡