高通410WiFi棒子修改显示分辨率

准备工具
1. unpackbootimg

git clone https://github.com/anestisb/android-unpackbootimg
cd android-unpackbootimg
make

2. dtimgextract

git clone https://github.com/s0be/dtimgextract
cd dtimgextrace
gcc dtimgextract.c -o dtimgextract 或者 make

或者
https://github.com/wuxianlin/dtimg2dtb-python

3.device-tree-compiler Debian系统自带,用apt安装

apt install device-tree-compiler

4. dtbtool

wget https://github.com/CyanogenMod/android_device_qcom_common/blob/cm-14.1/dtbtool/dtbtool.c
gcc dtbtool.c -o dtbtool

5. edl

安装方法参考 https://softs.im/msm8916-wifi-dongle/

步骤:
1. 9008模式 读出 boot.img

edl r boot boot.img

2. 解包 boot.img

mkdir boot
./unpackbootimg -i boot.img -o boot

可以看到在boot目录创建了很多文件,其中 boot.img-dtb 就是我们所需要的。
3. 解包 dt.img
将 boot.img-dtb复制到 合适的位置

mkdir unpack
cd unpack
../dtimgextract ../boot.img-dtb 

4. 反编译 dtb
在上一步的目录执行以下命令

mkdir output
for i in $(ls *.dtb);do dtc -I dtb -O dts -o output/$i.dts $i;done

反编译会出来大量警告

5. 查找设备使用的设备树

cd output
grep -rn "MSM 8916 512MB MTP" .

可以看见本次查找出了四个文件,经过对比发现四个文件内容完全一致,修改其中一个 然后覆盖另外三个即可。

6. 修改屏幕分辨率
打开ce_8_100_0.dtb.dts文件找到qcom,mdss_spi_st7735s_128128_cmd这一项
其中 qcom,mdss-spi-panel-with 和 qcom,mdss-spi-panel-height 就是

qcom,mdss_dsi_st7796s_320p_video {
				qcom,mdss-dsi-panel-name = "st7796s 320p video mode dsi panel";
				qcom,mdss-dsi-panel-controller = <0x42>;
				qcom,mdss-dsi-panel-type = "dsi_video_mode";
				qcom,mdss-dsi-panel-framerate = <0x3c>;
				qcom,mdss-dsi-virtual-channel-id = <0x00>;
				qcom,mdss-dsi-stream = <0x00>;
				qcom,mdss-dsi-panel-width = <0x140>;
				qcom,mdss-dsi-panel-height = <0x1e0>;

或者

			qcom,mdss_spi_st7735s_128128_cmd {
				qcom,mdss-spi-panel-name = "st7735s 128128 command mode spi panel";
				qcom,mdss-spi-panel-destination = "display_1";
				qcom,mdss-spi-panel-controller = <0x45>;
				qcom,mdss-spi-panel-framerate = <0x1b>;
				qcom,mdss-spi-panel-width = <0x84>;
				qcom,mdss-spi-panel-height = <0x84>;

Simulator video 比较正常 640×480 (0x280, 0x1e0)

			qcom,mdss_dsi_sim_video {
				qcom,mdss-dsi-panel-name = "Simulator video mode dsi panel";
				qcom,mdss-dsi-panel-controller = <0x44>;
				qcom,mdss-dsi-panel-type = "dsi_video_mode";
				qcom,mdss-dsi-panel-destination = "display_1";
				qcom,mdss-dsi-panel-framerate = <0x3c>;
				qcom,mdss-dsi-virtual-channel-id = <0x00>;
				qcom,mdss-dsi-stream = <0x00>;
				qcom,mdss-dsi-panel-width = <0x280>;
				qcom,mdss-dsi-panel-height = <0x1e0>;

可以改成 0x356,0x1e0 也就是

7. 编译dtb
修改完后对已修改的文件进行编译,使用以下命令,其中为ce_8_100_0.dtb.dts修改过的设备树源码,ce_8_100_0.dtb为编译后生成的设备树。

dtc -I dts -O dtb -o ce_8_100_0.dtb ce_8_100_0.dtb.dts

8.打包dt.img
把新生成的dtb文件替换掉第2步解包出来的unpack文件夹中对应的dtb文件,
将替换后的unpack文件夹复制到dtbToolCM文件夹中,
其中的output文件夹删掉,
执行以下命令进行打包。

./dtbToolCM -o boot.img-dtb unpack/

9.打包boot.img
把新生成的boot.img-dtb替换掉第1步解包出来的unpack文件夹中的boot.img-dtb,
并将unpack文件夹复制到mkbootimg所在文件夹,执行以下命令进行打包。

./mkbootimg \
--kernel boot/boot.img-zImage \
--ramdisk boot/boot.img-ramdisk.gz \
--cmdline "$(cat boot/boot.img-cmdline)" \
--board "$(cat boot/boot.img-board)" \
--base "$(cat boot/boot.img-base)" \
--pagesize "$(cat boot/boot.img-pagesize)" \
--dt boot/boot.img-dtb \
--kernel_offset "$(cat boot/boot.img-kerneloff)" \
--ramdisk_offset "$(cat boot/boot.img-ramdiskoff)" \
--second_offset "$(cat boot/boot.img-secondoff)" \
--tags_offset "$(cat boot/boot.img-tagsoff)" \
--os_version "4.4.4" \
--os_patch_level "2023-05-08" \
--hash "$(cat boot/boot.img-hash)" \
--output newboot.img

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注