Banner publicitario de PCBWay

TV TCL Android no pasa del logo

¿Antes del RTICE, que comandos puedo usar para intentar recuperarlo?
Si el bootloader está dañado, ninguno, lo extraño es que responde a los comandos que estás enviando.

Antes de usar RTICE o cualquier comando que pueda borrar la e-MMC, realiza un respaldo, ya que tendrá el bootloader, que a mi punto de vista, funciona.
Si ves el log que puse arriba, se ven errores al leer el boot
Esos mensajes son debido a que no encuentra los sectores de inicialización, no al bootloader.
El bootloader es el encargado de enviar esos mensajes, como por ejemplo, este: "------------can't find tmp/factory/recovery".
Sin embargo, existen otras partes que conforman el arranque del TV ("Boot Files").

Mira esta parte para que lo entiendas...
filename = HDCP2
Error: reading boot sector
first_HDCP:
reading hdcp2writed.used
filename = hdcp2writed.used
Error: reading boot sector
hdcp_file_name=HDCP2/
reading HDCP2/
filename = HDCP2/
Error: reading boot sector
read HDCP2 file fail
ac_on_update_SN_key:3626
filename = SnPlusKey
Error: reading boot sector
first_SnKey:
reading snkey.used
filename = snkey.used
Error: reading boot sector
snkey_file_name=SnPlusKey/
reading SnPlusKey/
filename = SnPlusKey/
Error: reading boot sector
file_fat_read failed!!!!!
ac_on_update_backlight_limit
reading panel_bl.txt
filename = panel_bl.txt
Error: reading boot sector
Can not find panel_bl.txt file

O sea qué, prácticamente lo que está dañado son varios archivos, tal vez debido a problemas en las particiones, y el error mostrado es: "Error: reading boot sector", haciendo referencia al archivo que se trató de leer.
.
Cuando falla el bootloader no existe comunicación con nada, y esto incluye RS-232, así que ni log de depuración habría.
Y si te fijas bien, el bootloader está realizando bien la tarea de inicializar el sistema pero no lo logra.

La duda es... ¿por qué no está cargando el firmware por USB?
Y la respuesta puede ser esta...
install image msg = tv_system=NULL imgfile_pattern=install_2842_600mA_1GDDR.img
image_name release

to decrypt...
decrypt rescue successful
sw sha256 ret 0
[ERR] Verify_SHA256_hash: hash value not match
[ERR] rtk_plat_run_rescue_from_eMMC: hash value not match

Esto indica que el archivo del firmware está corrupto porque el hash SHA256 obtenido no coincide con el interno.
Puede ser porque el archivo no se descargó correctamente, por lo cual deberías descargarlo nuevamente y volver a intentar.
Si el resultado sigue siendo el mismo, intenta con otro firmware para esa placa aunque sea de otra marca.
 
Aahhh, ok ok, gracias por la clase magistral. Entonces voy a descargarlo de nuevo y pruebo.

Mil gracias, información muy valiosa. Yo es que soy de la vieja escuela, de cuando las válvulas de vacío, jajajaja, y toda esta nueva tecnología hay que digerirla.
 
Hola,
En teoria lo que falla es el rescue linux en la emmc, ya que ese error te lo da tambien sin el usb puesto.

Como el linux no carga no llega a leer del usb, entonces solo queda hacerlo con:
- El RTICE
- El rt809 soldando los cables Gnd, D0, CMD y clk
- Con emmc_io_tool
- Recuperando por serie con securecrt la parte corrupta "rescue linux", usando los comandos del primer boot "realtek >"

Puedes compartir el archivo de actualizacion? De el podemos sacar el rescue linux para comparar.
 
Última edición:
El RTICE no se si se puede usar , no se si hay alguna version que soporte la cpu RTD2842.
El emmc_io_tool creo que tampoco , si el modo ATV es el "rescue linux" que no llega a cargar supongo que tampoco es una opcion.

Entonces quedaria las otras dos opciones rt809 o usando comandos basicos desde linea de comandos "realtek"

A ver que opina D@rkbytes que domina mas el tema.

Yo tengo aqui una placa rt2851p839 para hacer pruebas, asi que 100% no es lo mismo.
 
Última edición:
En teoría lo que falla es el rescue linux en la eMMC, ya que ese error te lo da también sin la memoria USB puesta.
Sí, tienes razón, pasé por alto la referencia "from_eMMC".
El RTICE no sé si se puede usar, si hay alguna versión que soporte el CPU RTD2842
Es cosa de probar con la versión de RTICE que hay disponible, como lo he mencionado en estos posts...
Post #479 del tema Firmware de Pantallas RCA Smart
Post #107 del tema Problemas con TV TD Systems
Nadie comentó si realizó la prueba, y actualmente no he tenido placas con ese SoC para probar.
Yo tengo aquí una placa RT2851P839 para hacer pruebas, así que 100% no es lo mismo.
Sí existes diferencias entre cada SoC, aunque el RTD2842 es muy parecido el RTD2831/41, por eso es que he sugerido hacer la prueba.
Lo que tienen en común desde el 2831 hasta el 2851, es que se puede ingresar al modo Linux, al igual que en Novatek NT72563, donde también se puede usar mmc_io_tool.
También es cuestión de probar si el bootloader extraído funciona, este archivo se encuentra dentro de la partición 9.boot.img, cómo: 9.boot
Dentro del firmware se encuentra en la carpeta package7/boot.img/boot
 
He probado varios rtice para un 2851 y no me conecta.


Buscando una forma fácil de hacerlo con la linea de comandos Realtek he encontrado esta.
Código:
El "vmlinux.rescue" lo sacamos al descomprimir con 7z el install_2842 y el package7/bootloader:
  "install_2842_600mA_1GDDR\package7\bootloader\vmlinux.rescue.rtd285o.optee.bin.lzma"

Copiar a un pendrive el archivo vmlinux.rescue.rtd285o.optee.bin.lzma y desde la linea de comandos realtek ejecutar:
ojo "// info" no hay que enviarlo , es solo un comentario , es decir ni las "//" ni lo que hay detras

usb start
usb dev            // info
fatls usb 0      // info
fatload usb 0 0x3000000 vmlinux.rescue.rtd285o.optee.bin.lzma 0x1000000
mmc writeb 0x3000000 0x00200000 0x1000000

¡OJO, esto es un ejemplo para una placa 2851, hay que averiguar o verificar las direcciones correctas para cada placa!

¿Qué te parece D@rkbytes? Lo he probado y me a funcionado en un 2851.

fatload - copia un fichero desde el pendrive a la memoria 0x3000000
mmc writeb - copia desde la memoria a la direccion de la emmc correspondiente.

También he probado de ejecutar el vmlinux.rescue desde una memoria USB "go ru", pero no le gusta mucho. :)

Código:
Info
Cuando se usa "fatwrite usb 0"  o "fatload usb 0" o "fatls usb 0" El 0 depende del puerto USB donde tenemos el pendrive
usar "usb dev" para ver que device es 0,1,2....

Realtek> usb dev
USB device 0: Vendor: Kingston Rev: 1.00 Prod: DataTraveler 2.0
            Type: Removable Hard Disk
            Capacity: 30632.0 MB = 29.9 GB (62734336 x 512)
Realtek>

Para @metatop, puedes enviar este comando desde "realtek >" haciendo log a un archivo?

env print

También esta prueba que acabo de probar, volcar parte de la eMMC a un fichero y lo subes:

Código:
usb start
usb dev          // info
mmc readb 0x3000000 0x00 0x3000100
fatwrite usb 0 0x3000000 test.bin 0x3000100
usb stop

Nota: La memoria USB debe estar formateada en FAT32
 

Adjuntos

  • env-print.txt
    16.2 KB · Visitas: 6
  • test.part01.rar
    5 MB · Visitas: 8
  • test.part02.rar
    5 MB · Visitas: 10
  • test.part03.rar
    5 MB · Visitas: 8
  • test.part04.rar
    1.4 MB · Visitas: 5
ok lo reviso , si te va bien podemos intentar arreglar el rescue linux y luego ya en teoria te cogera el update
ok esta el "Rescue Linux" corrupto.
Descomprimes el rar y tendras un file: vmlinux.rescue.rtd285o.optee.bin.lzma lo copias a un pendrive con formato fat32

Y en la linea de comandos realtek ejecutas fijate en que device esta tu usb al ejecutar "usb dev" y cambialo si es necesario donde ponga "usb 0"
Código:
usb start
usb dev          // info
fatls usb 0      // info
fatload usb 0 0x3000000 vmlinux.rescue.rtd285o.optee.bin.lzma 0x1000000
mmc writeb 0x3000000 0x00200000 0x1000000

Con esto estara arreglado el "Rescue Linux" y ya podras actualizar.
Haz log a un fichero de todo el proceso por si fallara algo.
 

Adjuntos

  • vmlinux.rescue.rtd285o.optee.bin.part2.rar
    4 MB · Visitas: 21
  • vmlinux.rescue.rtd285o.optee.bin.part1.rar
    10 MB · Visitas: 14
Última edición:
OK, OK
Ha dado resultado, una vez terminado el proceso he reiniciado con el firmware en el pendrive y me ha saltado la pantalla del recovery.
Le he hecho el factory y ha arrancado.
Luego le he procedido a instalar el firmware y para mi sorpresa me salido con el jeida/vesa cambiado, se supone que el firmware es para ese panel. Intentaré cambiarlo desde modo de servicio. Pero ha sido todo un éxito.

A ver si me he enterado del proceso:
  1. Hemos extraído el vmlinux.rescue de la emmc, con eso has visto que está corrupto y ¿ves la dirección donde hay que grabar el nuevo?
  2. Has sacado el "vmlinux.rescue.rtd285o.optee.bin.lzma" del firmware que me enviaron.
  3. Y lo hemos grabado en la emmc.
 
Estas placas pueden falar en diferentes posiciones, se corrompen los datos en la emmc. En el bootloader hay dos aplicaciones la que nos lleva a la linea de comandos "realtek" , son comandos muy basicos y el "vmlinux.rescue" que es un linux, este puede leer el upgrade del usb y actualizarlo todo.
En nuestro caso el "realtek" funcionaba pero el "vmlinux.rescue" estaba corrupto.

Para comprobarlo has dumpado toda la parte del bootloader de la emmc a un fichero. Asi podemos extraer el vmlinux.rescue de ese dump, comprobar en que direcciones esta cargado y compararlo con el que hemos descomprimido del fichero imagen de actualizacion.

Código:
usb start        // inicializa los usb's
usb dev          // info para ver en que usb esta el pendrive 0,1..
mmc readb 0x3000000 0x00 0x3000100 // copiamos la parte del boot de la emmc a la ram
                                   // Desde emmc 0x00 a 0x3000100 a ram 0x3000000
fatwrite usb 0 0x3000000 test.bin 0x3000100 // Copiamos de la ram a un fichero en el usb
usb stop

Con el comando "env print" tambien vemos donde esta el vmlinux.recovery , es el rescue_s=200000

Código:
system_parameters_5=emcu_s=3fd800 rescue_s=200000

Una vez tenemos el vmlinux.recovery bueno y sabemos donde esta en la emmc , podemos reescribirlo como has hecho.

si no se pudiera ni entrar en la linea de comandos "realtek" entonces si que hay que hacerlo con RTICE o grabar la emmc con hilillos o desoldando. Para la cpu RTD2851 no conozco ningun RTICE que funcione y parece que la RTD2842 es muy parecida a la RTD2851

Para lo del panel, si en el menu de servicio no funcionara , tienes el comando "spanel" , fijate bien antes de tocar cual tiene por defecto, a veces no es ninguno de la lista y utiliza el ini ese. Pero se puede jugar , si pasara algo raro , pues siempre se puede hacer una actualizacion.

Código:
Realtek> spanel
===================================================
You don't select any panel, default is [x] tmp/factory/bin_panel/rtkPanel.ini
===================================================
Please select the panel number you want:
[x] tmp/factory/bin_panel/rtkPanel.ini (Panel setting from ini)
[0] RTK_4K2K_VBY1_1Seg8Port.h
[1] China_Star_4K2K_VBY1.h
[2] Skyworth_Default_4K2K_VBY1.h
[3] LG_Vby1_To_HDMI.h
[4] RTK_Vby1_To_LVDS.h
[5] RTK_Vby1_To_LVDS_New.h
[6] benq22_default_panel.h
[7] Vby1_To_LVDS_To_HDMI.h
[8] TCL_4K2K_VBY1_2Seg8Port.h
[9] CHPI_55INCH_UHD60_6LANE_HIMAX.h
[10] CSPI_49INCH_UHD60_12LANE_8B.h
[11] ISP_AUO_TCONLESS.h
[12] VBY1_4K2K_to_H5X.h
Esto es un mapa de memoria de la parte del bootloader , has dumpado hasta mas arriba , pero hemos visto que el vmlinux.rescue estaba en esas direcciones 0x200000 a 0x1200000. El mapa puede cambiar , bueno para el bootloader creo que solo he visto 2 diferentes y la parte del sistema depende si la emmc es de 4, 8 o16 gb

1737211447677.png

Y esto lo que tenemos al descomprimir el fichero bootloader del update.

1737211849229.png

Por cierto has hecho log mientras hacia el update? Si lo tienes subelo , ahi se ve el mapa de memoria o se puede extraer.
 
Última edición:
Muy bien, me voy aclarando poco a poco, muchas gracias por compartir sabiduría, jajajaja.

En el modo servicio lleva para cambiar el jeida/vesa, lo pongo en vesa y ya se ve bien, pero no sé cómo guardar los cambios, cuando reinicio se queda como estaba. Tendré que intentarlo desde la consola realtek.

Una cosa, con este sistema, ¿se podría dumpear todo el firmware de la emmc?, porque estaría bien y te ahorras soldar hilos.

Cuelgo los dos log que guardé en el proceso:
 

Adjuntos

  • Log-18-01-2025 14-27-36.txt
    3.3 KB · Visitas: 1
  • Log-18-01-2025 14-33-41.txt
    44.1 KB · Visitas: 1
En el modo servicio lleva para cambiar el jeida/vesa, lo pongo en vesa y ya se ve bien, pero no sé cómo guardar los cambios, cuando reinicio se queda como estaba. Tendré que intentarlo desde la consola realtek.
Ese el problema con algunos parámetros en el modo de servicio, varias personas lo han comentado y a mí también me ha pasado.
Por eso es mejor realizar los cambios por UART, ya que de esa forma sí quedan guardados.
Una cosa, con este sistema, ¿se podría volcar todo el firmware de la eMMC? Porque estaría bien y te ahorras soldar hilos.
En el firmware elaborado por TCL, sí existe un comando, que es: tcl_mmc_dump
En el firmware que estás usando no viene ese comando, ya que no aparece en el log "help-RT2842P539.txt" que subiste.
Con la utilidad mmc_io_tool sí se debe poder y como he comentado, lo hace más rápido.
Esta misma utilidad también puede hacer la función inversa, o sea, escribir la e-MMC con el volcado en la memoria USB.

Quise hacer las pruebas realizadas por @ukamak, en una placa con SoC RTD2851 pero no viene incluido fatwrite.
Me traje la placa a casa para tratar de encontrar otra forma.
Si encuentro algo, es posible que lo añada a mmc_io_tool y también le agregue más funciones.
 
Lo mismo pasa con RTD2841 que no tiene el comando fatwrite.
Sería genial poder disponer del RTICE para estos relativamente nuevos SoC, pero por ningún lado existe, y eso que he realizado búsquedas en chino.
Como aclaración... fatwrite no es un comando, es una aplicación o utilidad Linux ELF (Executable and Linkable Format), así como mmc_io_tool, que reciben parámetros.
Estas aplicaciones se encuentran en la carpeta /bin del sistema, y forman parte de la pequeña máquina virtual Linux, que supongo es de donde proviene el nombre vmlinux.

Pero bueno, al menos podemos considerar como "nobles" a estos SoC, que estando bien el bootloader se pueden reparar por UART.
Al contrario de los SoC que requieren un password que ya no se puede obtener. 🙁
 
Si no esta disponible el fatload fatwrite se pueden usar otras opciones

- fatload, fatwrite - rapido y comodo
- tftp, tftpput - Necesitamos un servidor TFTP y conectarnos por ethernet, rapido
- loady - cargar por serie usando securecrt, facil, lento
- USB raw - hay que leer luego el usb con Win32Diskimager, diskgenius o similar , dificultad media.

Código:
*****************************************************************
- Recibir o trasnmitir un fichero desde un fichero en un pendrive
*****************************************************************

help:
 
  fatload - Copia un fichero de un USB a la ram
  usage: fatload <interface> <dev[:part]> <addr> <filename> [bytes] [file_count]
 
  fatwrite - Copia de ram a un fichero en el USB
  Usage: fatwrite <interface> <dev[:part]> <addr> <filename> <bytes>
    - write file 'filename' from the address 'addr' in RAM
      to 'dev' on 'interface'
      
examples:

  - Cargamos un fichero desde el pendrive a la ram y lo escribimos en la emmc
  usb start                                                                 // inicaliza los usb's
  usb dev                                                                   // Para ver en que device esta el pendrive
  fatls usb 0                                                               // Lista los ficheros, solo por informacion
  fatload usb 0 0x3000000 vmlinux.rescue.rtd285o.optee.bin.lzma 0x1000000   // Copia el fichero a ram con longitud <bytes>
  mmc writeb 0x3000000 0x00200000 0x1000000                                 // Escribe de la ram a la emmc
  usb stop
 
  - Leemmos de la emmc a la ram y lo guardamos en un fichero en el pendrive
  usb start
  usb dev
  mmc readb 0x3000000 0x00 0x3000100
  fatwrite usb 0 0x3000000 test.bin 0x3000100
  usb stop
 
 
******************************************************
- Recibir o trasnmitir un fichero desde un TFTP server
******************************************************
help:
  tftp - download image from TFTP server
  Usage: tftp address filename

  tftpput - TFTP put command, for uploading files to a server
  Usage: tftpput Address Size [[hostIPaddr:]filename]

examples:
  tftp 0x3000000 test.bin
  tftpput 0x3000000 0x100 sended.bin

******************************************************
- Recibir un fichero por uart usando protocolo ymodem
******************************************************

 - Se ejecuta "loady RamAddr" y nos aparecen C's , luego en secure crt vamos a Transfer -> Send Ymodem
   seleccionamos el fichero a enviar y pulsamos OK

Example:
  Realtek> loady 0x3000000
  ## Ready for binary (ymodem) download to 0x03000000 at 115200 bps...
  CCC
  Starting ymodem transfer.  Press Ctrl+C to cancel.
  Transferring test.bin...
    100%      49 bytes   12 bytes/sec 00:00:04       1 Errors 
  ## Total Size      = 0x00000031 = 49 Bytes

******************************************************
- Load o upload desde ram a un pendrive en formato raw
******************************************************

usb read addr blk# cnt - read `cnt' blocks starting at block `blk#'
    to memory address `addr'
usb write addr blk# cnt - write `cnt' blocks starting at block `blk#'
    from memory address `addr

Falta documentar un poco aqui, pendiente

******************************************************
- Load o upload desde ram a un pendrive en formato raw
******************************************************

usb read addr blk# cnt - read `cnt' blocks starting at block `blk#'
to memory address `addr'
usb write addr blk# cnt - write `cnt' blocks starting at block `blk#'
from memory address `addr

addr - direccion en ram en bytes
blk# - direccion en bloques // 1 bloque o sector son 0x200 bytes
cnt - longitud en bloques

Para cnt el maximo son 0x7fff blocks * 0x200 = 0xFFFE00 bytes
Si por ejemplo queremos excribir de ram al usb hay que hacerlo con varios comandos

Ejemplo escribiendo en 3 comandos
Código:
                                                                //    ram_addr                               
                   ramaddr  blk#       cnt          //      beg          end         blk_ini   blk_end
usb write 0x3000000 0x0000 0x7000      //   0x3000000 .. 0x3e00000      0x00000   0x07000
usb write 0x3E00000 0x7000 0x7000      //   0x3e00000 .. 0x4C00000      0x07000   0x0e000
usb write 0x4C00000 0xe000 0x7000      //   0x4C00000 .. 0x5A00000      0x0e000   0x15000

Una vez escrito al usb hay que leerlo con win32imager u otro programa que pueda leer el pendrive en raw mode.
Despues de usar ese pendrive , si queremos volver a formatearlo para windows hay que usar diskpart, diskgenius .....

Nota , no se editar el comentario anterior.
Para el tftp hay que configurar las ip's con el comando env
Código:
ipaddr=192.168.0.200        // ip de la placa
serverip=192.168.0.2        // ip del TFTP server 

ethaddr=10:20:30:40:50:60
gatewayip=192.168.0.1
loadaddr=0x03000000
netmask=255.255.255.0
 
Pues no me cambia nada del jeida/vesa cuando cambio el panel por consola realtek, por lo visto no está la información de esa lista de panales dentro del firmware. He visto dentro de los archivos de la actualización y solo hay info de un panel, al sobrescribir el firmware en la emmc ya no hay opción de cambiar de panel.
Al final tendré que cambiarlo en la tcon.

Muy valiosa la información de @ukamat, habrá que estudiarla con detenimiento. Me falta el tema de extraer el mapa de memoria, tengo que hacer pruebas.

Una cuestión, para extraer un dump de toda la emmc tendría que indicar desde la dirección 0x0000000 hasta el final, no?
 
Pues no me cambia nada del jeida/vesa cuando cambio el panel por consola realtek, por lo visto no está la información de esa lista de panales dentro del firmware. He visto dentro de los archivos de la actualización y solo hay info de un panel, al sobrescribir el firmware en la emmc ya no hay opción de cambiar de panel.
Al final tendré que cambiarlo en la tcon.

Muy valiosa la información de @ukamat, habrá que estudiarla con detenimiento. Me falta el tema de extraer el mapa de memoria, tengo que hacer pruebas.

Una cuestión, para extraer un dump de toda la emmc tendría que indicar desde la dirección 0x0000000 hasta el final, no?

Me apunto como pendiente estudiar lo del jeida/vesa.

Para dumpar toda la emmc hay otros metodos, la emmc es muy grande y no se puede hacer de manera facil usando la ram , habria que dumpar por partes. Se puede hacer modificando el "env" desde la linea de comandos realtek el uboot.


Código:
El usb debe ser lo suficientemente grande y formateado con NTSC o que pueda
con ficheros mayores de 4GB

- Para hacer dump a un pendrive ejecutar los comandos despues ">"

   1 - Entrar con ESC en consola realtek "uboot"
   2 - > env print
   3 - ver cual es el ultimo parameters, normalmente el 5 para añadir "parameters_6"
   4 - > env set system_parameters_6 mmc_dump_enable image=tdsystems_r.img
   4a - > env save 
   5 - Colocar pen_drive vacio en el TV
   6 - > reset    // cuando inicie de nuevo pulsar tecla TAB para entrar en vmlinux_recovery
   7 - Esperar a que dumpe toda la emmc

- Despues de hacer el dump hay que quitar la orden desde realtek
   1 - > env set system_parameters_6
   2 - > env save
 
Atrás
Arriba