ZTE B860AV2.1 折腾 Armbian 您所在的位置:网站首页 中兴B860AV21-A2 ZTE B860AV2.1 折腾 Armbian

ZTE B860AV2.1 折腾 Armbian

2024-01-24 11:35| 来源: 网络整理| 查看: 265

开篇废话

这是我折腾这坑爹玩意留下的笔记,防止以后折腾的时候找不到了。

ZTE官方的产品描述跟没写一样,不愧是 to b 产品 产品描述

而且产品线非常混乱,在折腾之前请确认是 B860AV2.1 型号,型号参考可以直接到结尾#参考材料部分。 世界未解之谜,这破电视盒子到底是 s905l 的什么型号呢?

具体折腾思路是:先刷入改版后的 Android(当作底包)然后在改版 Android 重启到 u盘内的 Armbian 然后拷贝到 emmc 中(替换掉 Android)

过程 准备

首先我们要准备以下材料:

硬件 TTL 有 TTL 方便一些操作,如果不想 debug 可以不需要 双公 usb 线 电视盒子本体 软件 adb (android-platform-tools) USB_Burning_Tool screen / putty dd 各种写入映像的软件 固件 Armbian (https://github.com/ophub/amlogic-s9xxx-armbian/releases) 选择 s905l3a 版本的 Armbian meson-gxl-s905x-p212.dtb 修 emmc 的 android_tv_mgv2000-s905l2-android4.4.2-root 记得解压 拆机

此处注意,ZTE节省成本只给了两个螺柱,所以我们不需要把四个脚垫都掀开来(参考右上角): box-overwrite

刷 Android 底包

usb burning tool 工具和驱动自己找去。

翻到主板背面,找到 C125 用镊子或者小螺丝刀短接然后上电: C125 请忽略这么脏的 DC

成功后 S905 会进入下载模式,我们可以用 USB_Burning_Tool 把上面提到的底包 android_tv_mgv2000-s905l2-android4.4.2-root 刷进去 usb burning tool

导入烧录包后点击开始即可。 然后重启开机测试下能不能进入 Android 系统,这个可以连 HDMI 也可以在 TTL 知道。

如果触发失败需要重试,需要 DC 和 USB 都断开连接,否则双公 USB 线会给电视盒子继续供电导致重开失败。

TTL

115200 连接方式如图: ttl ^ 黄 = GND 红 = RX 橙 = TX

在 macOS:

screen /dev/tty.usbserial-1410 115200

Windows 不再啰嗦。

中断 u-boot 启动是 ctrl + z 如果有兴趣看 u-boot 菜单的话:

? - alias for 'help' aml_sysrecovery- Burning with amlogic format package from partition sysrecovery amlmmc - AMLMMC sub system autoscr - run script from memory base - print or set address offset bmp - manipulate BMP image data booti - boot arm64 Linux Image image from memory bootm - boot application image from memory bootp - boot image via network using BOOTP/TFTP protocol cbusreg - cbus register read/write clkmsr - measure PLL clock cmp - memory compare cp - memory copy crc32 - checksum calculation cvbs - CVBS sub-system dcache - enable or disable data cache defenv_reserv- reserve some specified envs after defaulting env dhcp - boot image via network using DHCP/TFTP protocol echo - echo args to console efuse - efuse read/write data commands efuse_user- efuse user space read write ops emmc - EMMC sub system env - environment handling commands exit - exit script false - do nothing, unsuccessfully fatinfo - print information about filesystem fatload - load binary file from a dos filesystem fatls - list files in a directory (default /) fatsize - determine a file's size fdt - flattened device tree utility commands get_rebootmode- get reboot mode go - start application at address 'addr' gpio - query and control gpio pins hdmitx - HDMITX sub-system help - print command description/usage i2c - I2C sub-system icache - enable or disable instruction cache imgread - Read the image from internal flash with actual size irkey - irkey key_value1 key_value2 key_value3 time_value itest - return true/false on integer compare jtagoff - disable jtag jtagon - enable jtag keyman - Unify key ops interfaces based dts cfg keyunify- key unify sub-system loop - infinite loop on address range macreg - ethernet mac register read/write/dump md - memory display mm - memory modify (auto-incrementing address) mmc - MMC sub system mmcinfo - display MMC info mw - memory write (fill) mwm - mw mask function nm - memory modify (constant address) open_scp_log- print SCP messgage osd - osd sub-system phyreg - ethernet phy register read/write/dump ping - send ICMP ECHO_REQUEST to network host printenv- print environment variables rarpboot- boot image via network using RARP/TFTP protocol read_temp- cpu temp-system reboot - set reboot mode and reboot system reset - Perform RESET of the CPU rsvmem - reserve memory run - run commands in an environment variable saradc - saradc sub-system saradc_12bit- saradc sub-system saveenv - save environment variables to persistent storage sdc_burn- Burning with amlogic format package in sdmmc sdc_update- Burning a partition with image file in sdmmc card set_trim_base- cpu temp-system set_usb_boot- set usb boot mode setenv - set environment variables showvar - print local hushshell variables sleep - delay execution for some time store - STORE sub-system systemoff- system off temp_triming- cpu temp-system test - minimal test like /bin/sh tftpboot- boot image via network using TFTP protocol true - do nothing, successfully unpackimg- un pack logo image into pictures update - Enter v2 usbburning mode usb - USB sub-system usb_burn- Burning with amlogic format package in usb usb_update- Burning a partition with image file in usb host usbboot - boot from USB device version - print monitor, compiler and linker version vout - VOUT sub-system vpu - vpu sub-system wipeisb - wipeisb write_trim- cpu temp-system write_version- cpu temp-system

env:

gxl_p211_v1#env print 1080i_h=1043 1080i_w=1853 1080i_x=33 1080i_y=18 1080p_h=1043 1080p_w=1853 1080p_x=33 1080p_y=18 480i_h=433 480i_w=649 480i_x=35 480i_y=23 480p_h=433 480p_w=649 480p_x=35 480p_y=23 576i_h=554 576i_w=680 576i_x=20 576i_y=11 576p_h=554 576p_w=680 576p_x=20 576p_y=11 720p_h=691 720p_w=1229 720p_x=25 720p_y=14 ab=0 aml_dt=gxl_p211_1g baudrate=115200 boardid=8 bootargs=rootfstype=ramfs init=/init console=ttyS0,115200 no_console_suspend earlyprintk=aml-uart,0xc81004c0 ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 use_cma_first=1 androidboot.selinux=disabled logo=osd1,loaded,0x3d800000,720p50hz vout=720p50hz,enable hdmimode=720p50hz cvbsmode=576cvbs hdmitx= cvbsdrv=1 androidboot.firstboot=1 jtag=apee quiet androidboot.hardware=amlogic androidboot.boardid=8 bootcmd=run start_autoscript; run storeboot bootdelay=1 bootup_offset=0x1088600 bootup_size=0x3f4848 cmdline_keys=if keyman init 0x1234; then if keyman read usid ${loadaddr} str; then setenv bootargs ${bootargs} androidboot.serialno=${usid};fi;if keyman read mac ${loadaddr} str; then setenv bootargs ${bootargs} mac=${mac} androidboot.mac=${mac};fi;if keyman read deviceid ${loadaddr} str; then setenv bootargs ${bootargs} androidboot.deviceid=${deviceid};fi;fi; cvbs_drv=1 cvbsmode=576cvbs digitaudiooutput=PCM display_bpp=16 display_color_bg=0 display_color_fg=0xffff display_color_index=16 display_height=720 display_layer=osd1 display_width=1280 dtb_mem_addr=0x1000000 ethact=dwmac.c9410000 ethaddr=00:15:18:01:81:31 factory_reset_poweroff_protect=echo wipe_data=${wipe_data}; echo wipe_cache=${wipe_cache};if test ${wipe_data} = failed; then run init_display; run storeargs;if mmcinfo; then run recovery_from_sdcard;fi;if usb start 0; then run recovery_from_udisk;fi;run recovery_from_flash;fi; if test ${wipe_cache} = failed; then run init_display; run storeargs;if mmcinfo; then run recovery_from_sdcard;fi;if usb start 0; then run recovery_from_udisk;fi;run recovery_from_flash;fi; fb_addr=0x3d800000 fb_height=1080 fb_width=1920 fdt_high=0x20000000 filesize=2c5 firstboot=1 gatewayip=10.18.9.1 hdmimode=720p50hz hostname=arm_gxbb init_display=imgread pic logo bootup $loadaddr;bmp pixel $bootup_offset;osd open;osd clear;bmp display $bootup_offset;bmp scale initargs=rootfstype=ramfs init=/init console=ttyS0,115200 no_console_suspend earlyprintk=aml-uart,0xc81004c0 ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 use_cma_first=1 androidboot.selinux=disabled ipaddr=10.18.9.97 irremote_update=if irkey 0x7d82dd22 0x7e81dd22 0x728ddd22 500000; then run recovery_from_flash; if itest ${irkey_value} == 0x29d64cb3; then run update;else if itest ${irkey_value} == 0x6996c43b; then run update;else if itest ${irkey_value} == 0x728ddd22; then run update;\ fi;fi;fi;fi; jtag=apee judge_factory_reset_protect=echo into judge_factory_reset_protect;if test ${wipe_data} = failed; then echo wipe_data=${wipe_data};if test ${reboot_mode} = cold_boot; then run factory_reset_poweroff_protect;fi;fi;if test ${wipe_cache} = failed; then echo wipe_cache=${wipe_cache};if test ${reboot_mode} = cold_boot; then run factory_reset_poweroff_protect;fi;fi; loadaddr=1080000 netmask=255.255.255.0 outputmode=720p50hz preboot=run factory_reset_poweroff_protect;run init_display;run upgrade_check;run storeargs;run switch_bootmode;run irremote_update reboot_mode=cold_boot recovery_from_flash=setenv bootargs ${bootargs} aml_dt=${aml_dt} recovery_part={recovery_part} recovery_offset={recovery_offset};if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then bootm ${loadaddr}; fi recovery_from_sdcard=if fatload mmc 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;if fatload mmc 0 ${loadaddr} recovery.img; then if fatload mmc 0 ${dtb_mem_addr} dtb.img; then echo sd dtb.img loaded; fi;bootm ${loadaddr};fi; recovery_from_udisk=if fatload usb 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;if fatload usb 0 ${loadaddr} recovery.img; then if fatload usb 0 ${dtb_mem_addr} dtb.img; then echo udisk dtb.img loaded; fi;bootm ${loadaddr};fi; recovery_offset=0 recovery_part=recovery sdc_burning=sdc_burn ${sdcburncfg} sdcburncfg=aml_sdc_burn.ini serverip=10.18.9.113 start_autoscript=if mmcinfo; then run start_mmc_autoscript; fi; if usb start; then run start_usb_autoscript; fi; run start_emmc_autoscript start_emmc_autoscript=if fatload mmc 1 1020000 emmc_autoscript; then autoscr 1020000; fi; start_mmc_autoscript=if fatload mmc 0 1020000 s905_autoscript; then autoscr 1020000; fi; start_usb_autoscript=for usbdev in 0 1 2 3; do if fatload usb ${usbdev} 1020000 s905_autoscript; then autoscr 1020000; fi; done stderr=serial stdin=serial stdout=serial storeargs=setenv bootargs ${initargs} logo=${display_layer},loaded,${fb_addr},${outputmode} vout=${outputmode},enable hdmimode=${hdmimode} cvbsmode=${cvbsmode} hdmitx=${cecconfig} cvbsdrv=${cvbs_drv} androidboot.firstboot=${firstboot} jtag=${jtag} quiet; setenv bootargs ${bootargs} androidboot.hardware=amlogic androidboot.boardid=${boardid};run cmdline_keys; storeboot=if imgread kernel boot ${loadaddr}; then bootm ${loadaddr}; fi;run update; switch_bootmode=get_rebootmode;echo rebootmode=${reboot_mode};if test ${reboot_mode} = factory_reset; then run recovery_from_flash;else if test ${reboot_mode} = update; then run update;fi;fi; try_auto_burn=update 700 750; uimode=720p update=run usb_burning; run sdc_burning; if mmcinfo; then run recovery_from_sdcard;fi;if usb start 0; then run recovery_from_udisk;fi;run recovery_from_flash; upgrade_check=echo upgrade_step=${upgrade_step}; if itest ${upgrade_step} == 3; then run init_display; run storeargs; run update;else if itest ${upgrade_step} == 1; then defenv_reserv; setenv upgrade_step 2; saveenv; run init_display;fi;fi; upgrade_step=2 usb_burning=update 1000 wipe_cache=successful wipe_data=successful

部分启动日志:

GXL:BL1:9ac50e:a1974b;FEAT:ADFD318C;POC:3;RCY:0;EMMC:0;READ:0;0.0;CHK:0; TE: 64550 BL2 Built : 15:10:35, Sep 1 2017. gxl g64082aa - xiaobo.gu@droid12 Board ID = 8, adc=618 set vcck to 1070 mv set vddee to 1070 mv CPU clk: 1200MHz 2layers board, use ddr_set[0] DQS-corr enabled DDR scramble enabled STICKY_REG0: 0x00000000 STICKY_REG1: 0x00000000 STICKY_REG9: 0x00000000 DDR3 chl: Rank0 @ 792MHz Rank0: 1024MB(auto)-2T-11 DataBus test pass! AddrBus test pass! emmc switch highspeed 52M -s Load fip header from eMMC, src: 0x0000c200, des: 0x01400000, size: 0x00004000 New fip structure! Load bl30 from eMMC, src: 0x00010200, des: 0x01100000, size: 0x00007600 Load bl301 from eMMC, src: 0x00018200, des: 0x01200000, size: 0x00002200 Load bl31 from eMMC, src: 0x0001c200, des: 0x10100000, size: 0x00019600 Load bl33 from eMMC, src: 0x00038200, des: 0x01000000, size: 0x0005b600 NOTICE: BL3-1: v1.0(debug):3048f05 NOTICE: BL3-1: Built : 22:38:14, Aug 20 2017 NOTICE: BL31: GXL normal boot! NOTICE: BL31: BL33 decompress pass [Image: gxl_v1.1.3098-cf1f353 2017-09-11 19:43:10 xiaobo.gu@droid12] efuse init ops = c2 efuse init hdcp = c, cf9=7 bl30: check_permit, count is 1 bl30: check_permit: ok! chipid: ef be ad de d f0 ad ba ef be ad de not ES chip [0.301723 Inits done] sINFO: BL3-1: Initializing runtime services WARNING: No OPTEE provided by BL2 boot loader ERROR: Error initializing runtime service opteed_fast INFO: BL3-1: Preparing for EL3 exit to normal world INFO: BL3-1: Next image address = 0x1000000 INFO: BL3-1: Next image spsr = 0x3c9 ecure task start! hi g hU t-aBsoko ts t2a0r1t5!. 0 1 low( Otcats k2 6s t2a0r1t7! - 21:19:40) DRAM: 1 GiB Relocation Offset is: 36ec4000 gpio: pin GPIODV_24 (gpio 43) value is 1 register usb cfg[0][1] = 0000000037f5c2d0 [CANVAS]canvas init vpu: error: vpu: check dts: FDT_ERR_BADMAGIC, load default parameters vpu: clk_level = 7 vpu: set clk: 666667000Hz, readback: 666660000Hz(0x300) vpp: vpp_init MMC: aml_priv->desc_buf = 0x0000000033eb4ac0 aml_priv->desc_buf = 0x0000000033eb6de0 SDIO Port B: 0, SDIO Port C: 1 emmc/sd response timeout, cmd8, status=0x3ff2800 emmc/sd response timeout, cmd55, status=0x3ff2800 [mmc_init] mmc init success dtb magic 08088b1f Amlogic multi-dtb tool GZIP format, decompress... Multi dtb detected 2layers board, board id use 7 Multi dtb tool version: v2 . Support 7 dtbs. aml_dt soc: gxl platform: p211 variant: 1g dtb 0 soc: gxbb plat: p201 vari: 1g dtb 1 soc: gxbb plat: p201 vari: 2g dtb 2 soc: gxl plat: p211 vari: 1g dtb 3 soc: gxl plat: p211 vari: 2g dtb 4 soc: gxl plat: p215 vari: 1g dtb 5 soc: gxl plat: p215 vari: 2g dtb 6 soc: gxlx plat: p261 vari: 1g Find match dtb: 2 start dts,buffer=0000000033eb9610,dt_addr=0000000033eb9610 Amlogic multi-dtb tool Single dtb detected parts: 13 00: logo 0000000002000000 1 01: recovery 0000000002000000 1 02: rsv 0000000000800000 1 03: tee 0000000000800000 1 04: crypt 0000000002000000 1 05: misc 0000000002000000 1 06: instaboot 0000000020000000 1 07: boot 0000000002000000 1 08: system 0000000040000000 1 09: cache 0000000020000000 2 10: params 0000000004000000 2 11: bootfiles 0000000020000000 2 12: data ffffffffffffffff 4 eMMC/TSD partition table have been checked OK! check pattern success mmc env offset: 0x27400000 In: serial Out: serial Err: serial board id is : 8 hpd_state=1 [720p50hz] is invalid for cvbs. set hdmitx VIC = 19 config HPLL = 2970 HPLL: 0xc000027b config HPLL done j = 2 vid_clk_div = 1 hdmitx: set enc for VIC: 19 HDMITX-DWC addr=0x10004006 rd_data=0x40 Error: HDMITX-DWC exp_data=0xff mask=0x9f hdmitx phy setting done div40 = 0 hdmtix: set audio [store]To run cmd[emmc dtb_read 0x1000000 0x40000] _verify_dtb_checksum()-917: calc 5ebc33a9, store 5ebc33a9 _verify_dtb_checksum()-917: calc 5ebc33a9, store 5ebc33a9 dtb_read()-1039: total valid 2 dtb_read()-1106: do nothing Amlogic multi-dtb tool GZIP format, decompress... Multi dtb detected 2layers board, board id use 7 Multi dtb tool version: v2 . Support 7 dtbs. aml_dt soc: gxl platform: p211 variant: 1g dtb 0 soc: gxbb plat: p201 vari: 1g dtb 1 soc: gxbb plat: p201 vari: 2g dtb 2 soc: gxl plat: p211 vari: 1g dtb 3 soc: gxl plat: p211 vari: 2g dtb 4 soc: gxl plat: p215 vari: 1g dtb 5 soc: gxl plat: p215 vari: 2g dtb 6 soc: gxlx plat: p261 vari: 1g Find match dtb: 2 Net: dwmac.c9410000 wipe_data=successful wipe_cache=successful bmp pixel: 16 [CANVAS]addr=0x3d800000 width=3840, height=2160 upgrade_step=2 amlkey_init() enter! [EFUSE_MSG]keynum is 4 [BL31]: tee size: 0 [KM]Error:f[key_manage_query_size]L507:key[usid] not programed yet [KM]Error:f[key_manage_query_size]L507:key[mac] not programed yet [KM]Error:f[key_manage_query_size]L507:key[deviceid] not programed yet rebootmode=cold_boot key1 = 7d82dd22 key2 = 7e81dd22 key3 = 728ddd22 time_out = 7a120 ir init irkey - irkey key_value1 key_value2 key_value3 time_value Usage: irkey Hit any key to stop autoboot: 1 0 gxl_p211_v1# set env print Unknown command ' env' - try 'help'

进到系统后,我们输入 reboot update 即可让电视盒子从 U盘(没试过内存卡是否可以)sideload 启动

root@p201_iptv:/ # reboot update

好像忘记说明怎么做系统盘了

制作系统u盘

首先从#准备中下载最新的 Armbian 包,至于要 Ubuntu/Debian 看个人喜好了。 用 balenaEtcher 之类的玩意写U盘就是了 记得解压啊!。 然后我们要更改下 uEnv.ini 和手动替换(加入) dtb

uEnv.ini

LINUX=/zImage INITRD=/uInitrd #FDT=/meson-gxl-s905x-p212.dtb FDT=/dtb/amlogic/meson-gxl-s905x-p212.dtb APPEND=root=LABEL=ROOTFS_EMMC rootflags=data=writeback rw rootfstype=ext4 console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1

然后:

cp u-boot-s905x-s912.bin u-boot.ext wget https://blog.huggy.moe/attachment/2022/15/meson-gxl-s905x-p212.dtb

人话:

复制 u-boot-s905x-s912.bin 成 u-boot.ext 下载 meson-gxl-s905x-p212.dtb 并且随便放(uEnv.ini)也要跟着改 启动 & 刷入 emmc

在这个阶段,可以使用 网络 / TTL / HDMI + 键盘 操控

用 armbian-install no 参数不解释。

Please Input ID: 0 Please Input SoC Name(such as s9xxx): s905l2a Please Input DTB Name(such as meson-xxx.dtb): meson-gxl-s905x-p212.dtb Please Input UBOOT_OVERLOAD Name(such as u-boot-xxx.bin): Please Input MAINLINE_UBOOT Name(such as xxx-u-boot.bin.sd.bin): Please Input ANDROID_UBOOT Name(such as xxx-bootloader.img): [[94m INFO [0m] Input Box ID: [ 0 ] [[94m INFO [0m] FDTFILE: [ meson-gxl-s905x-p212.dtb ] [[94m INFO [0m] MAINLINE_UBOOT: [ ] [[94m INFO [0m] ANDROID_UBOOT: [ ] [[94m INFO [0m] UBOOT_OVERLOAD: [ ] [[94m INFO [0m] K510: [ 0 ] [[95m STEPS [0m] Start selecting file system type... ----------------------------------------------- ID TYPE ----------------------------------------------- 1 ext4 2 btrfs ----------------------------------------------- [[93m OPTIONS [0m] Please Input ID: 1 [[94m INFO [0m] Input Type ID: [ 1 ] [[94m INFO [0m] The type of file system: [ ext4 ]

然后再次重启即可

dtb

此处我也没有折腾懂,当一个记录了

在实际折腾中,我找不到 emmc,大概是 dtb 对于设备描述有些问题,毕竟机器和真的 p212 公版还是有点区别的。 我想到的方案是比对 Android 里面的 dtb 文件,然后比对:

dump android dtb

首先需要在 Android 系统内 dump boot.img 出来,方便我们对比,找个对于你来说方便的姿势就好,这里我用了 adb 来安排:

# root 情况下 dd if=/dev/block/boot of=/sdcard/boot.img # 电脑 adb pull /sdcard/boot.img 解包

此处我们不需要打包回去,所以 binwalk 一把梭即可。

binwalk boot.img -e ls _boot.img.extracted # 688000 688000.gz 800 800.gz dt.img dt.img.gz

其中 dt.img 就是 dtb(s) 了 我们用 split-appended-dtb 或者 extract-dtb 把 dtb dump 出来 然后才发现有7份 dtb 根本不知道用的是哪个 dtb

dtb2dts

dtc 好像是 mkbootimg 工具链送的,自己装一下

# dtc -I (输入格式) -O (输出格式) (输入文件)-o (输出文件) # 所以此处 dtb dts 对调一下就是编译回去的了 dtc -I dtb -O dts dtbdump_1.dtb -o 1.dts dtc -I dtb -O dts dtbdump_2.dtb -o 2.dts dtc -I dtb -O dts dtbdump_3.dtb -o 3.dts dtc -I dtb -O dts dtbdump_4.dtb -o 4.dts dtc -I dtb -O dts dtbdump_5.dtb -o 5.dts dtc -I dtb -O dts dtbdump_6.dtb -o 6.dts dtc -I dtb -O dts dtbdump_7.dtb -o 7.dts 折腾期间的各种想法

一开始我认为是针脚顺序不对,然而解包 p212 的 dtb 发现都是 by-name 形式的,应该没有什么问题,由于格式差别太大,已经无法通过人肉比对 .mmc 部分来修了,直到我看到了 中兴机顶盒ZXV10 B860AV2.1T 2022款刷armbian系统 帖子才知道是这坑爹玩意批次的硬件规格都有不一样的。。。。

你在写卡部分会提示找不到emmc原因就是新款中兴盒子把 emmc 换成 e-nand 它的频率从 0x5f5e100 变到了 0x2faf080 如果你有兴趣的话可以使用device-tree-compiler自己更改这个数值 ,篇幅问题我不再详述。

0x2faf080

搜索 0x2faf080 可以看到确实有部分 dtb 是用了 0x2faf080 于是在 armbian 就可以识别到 emmc 了

结尾

为了这个破玩意折腾了一天多了,感觉还是什么都没学到,只是得到了一台 1+8G 的垃圾机器而已。 另外我的 不过 TTL 比以前熟练多了,这次还尝试自己改 dtb 来适配移植 Armbian,也算不错了。

neofetch

最后怀念下拆外壳而牺牲的 sd 卡: rip sdcard R.I.P.

参考材料 真心求教中兴B860A各种版本的区别! 汇总:中兴盒子B860AV2.1-A 刷机 固件教程

B860A系列盒子包含:B860A(S812) B860AV1.1(MSO9280) B860AV2.1(S905系列) B860AV2.2 (zx296716) B860AV1.1-T(S905系列) B860AV1.1-T2(zx296716) CM101-h(同B860AV2.1)

中兴机顶盒ZXV10 B860AV2.1T 2022款刷armbian系统 Ty1208-z S905m 刷root并且自动安装armbian 中兴 B860AV2.1-S905L 刷机 S905系列的uboot分析 milton 大神有不少分析 u-boot 的文章,值得一看 哇酷开发者社区 在不被官方支持的Amlogic设备上安装ArchLinux ARM Amlogic设备上的启动流程和配置


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有