Inyeccion BL301 - EmuELEC/EmuELEC GitHub Wiki

AVISO: Ni el equipo de EmuELEC ni el que ha escrito este hilo. No nos hacemos responsables, si brikeas tu tvbox utilizando este método.

¿Para que sirve?

Para corregir la función de encendido mediante mandos IR, CEC o WOL en dispositivos Amlogic.

¿Como funciona?

inject_bl301, lo que hace es intercambiar el blob bl301 del gestor de arranque o bootloader, sin tocar nada mas. Este blob es el responsable de controlar la suspensión y apagado del dispositivo. Al intercambiar este blob, se solventara el problema.

Esto tiene como ventaja, que usa el gestor de arranque original y es casi imposible brickear o estropear el dispositivo, ya que el bl301 solo se utiliza al suspender o apagar el dispositivo. Igualmente si se encuentra algún problema, se puede restaurar uana copia de seguridad que se realiza en el proceso y el bootloader quedara como antes de la inyección.

¿Que dispositivos lo soportan?

SoC ID: 0x28 - G12A (S905X2)
SoC ID: 0x29 - G12B (S922X, A311D)
SoC ID: 0x2B - SM1  (S905X3, S905D3)

Instalación del Bl301

  1. Nos conectamos mediante SSH al dispositivo que tenemos instalado EmuELEC e introducimos el siguiente comando.
inject_bl301
  1. Después nos saldrá un texto como el de a continuación. Que nos comentara, para que sirve esta herramienta y nos preguntara, que si estamos seguros de realizar este proceso. Para proceder con la instalación, escribimos "y" y pulsamos enter.
CoreELEC:~ # inject_bl301
Starting bootloader blob BL301 injection tool...

This tool can be used to update the bootloader
blob BL301 of the vendor bootloader on the internal
eMMC. This bootloader blob BL301 is customized by
Team CoreELEC to support all wake-up features like
CEC, Wake-On-LAN, IR, and GPIO wake-up from
suspend or power off state!

Device serial number: 280b4000012e33000009313256474d50
Using CPU type G12A (28): S905D2, S905X2
Using binary type because of CoreELEC DT-ID: Generic
Using /dev/bootloader as bootloader partition

Testing bootloader for package version v2...
Did not find Amlogic image v2 header magic!

Searching TOC_HEADER. Please wait...
Found TOC_HEADER at:            0x00010210
Name:                           AA640001
Serial Number:                  12345678
Flags:                          0

TOC ENTRY #0
UUID:                           9766FD3D89BEE849AE5D78A140608213
Offset Address:                 0x5C000 (absolute: 0x6C210)
Size:                           0xE570
Flags:                          0x0
Found BL30 blob image at:       0x0006C210
Amlogic magic:                  @AML
Old signature:                  FCC1D8D71366E27A3950A195E53BFEDF66B87966D9272D4B0312558DE4BE0FD7
Using BL301.bin:                Generic_28_29_bl301.bin
Use config.ini value:           usbpower = 0x01
Use config.ini value:           remotewakeup = 0xeb14ff00
Use config.ini value:           cec_osd_name = NEO T5
New signature:                  F227E1C7D9B03417A8AF7D3C2DD96C412B362FB974FD4C6A1E65F12EBFC601F7

Please confirm to write the bootloader blob BL301 to
the internal eMMC! Please ensure to update first the device
to the last vendor firmware! And remember if the vendor
firmware get updated you have to do this step again as the
bootloader blob will be overwritten!

Continue? [y/n] y
  1. Procederá ha realizar una copia de seguridad del blob301 que viene en nuestro dispositivo y posteriormente instalara el suyo.
Make backup of vendor bootloader to: /flash/280b4000012e33000009313256474d50_bl301.bin
Finished update of BL301.bin on internal eMMC!
Please reboot device now and enjoy the new CoreELEC wake-up features!
  1. Cuando finalice la instalación, procederemos a reiniciar el dispositivo mediante este comando:
sync && reboot
  1. Ya con esto habremos terminado de instalar el blob301, con esto ya solo nos faltaría mapear la tecla para encender el dispositivo. (Aquí tienes la guía)

¿Como puedo comprobar que se ha instalado correctamente?

Simplemente ejecutando la herramienta de nuevo. Esta comprobara si el blob301 que tiene el dispositivo concuerda con el del script. Indícanos que no hace falta instalarlo y saliendose de la herramienta, si se ha instalado correctamente.

CoreELEC:~ # inject_bl301
Starting bootloader blob BL301 injection tool...

This tool can be used to update the bootloader
blob BL301 of the vendor bootloader on the internal
eMMC. This bootloader blob BL301 is customized by
Team CoreELEC to support all wake-up features like
CEC, Wake-On-LAN, IR, and GPIO wake-up from
suspend or power off state!

Device serial number: 280b4000012e33000009313256474d50
Using CPU type G12A (28): S905D2, S905X2
Using binary type because of CoreELEC DT-ID: Generic
Using /dev/bootloader as bootloader partition

Testing bootloader for package version v2...
Did not find Amlogic image v2 header magic!

Searching TOC_HEADER. Please wait...
Found TOC_HEADER at:            0x00010210
Name:                           AA640001
Serial Number:                  12345678
Flags:                          0

TOC ENTRY #0
UUID:                           9766FD3D89BEE849AE5D78A140608213
Offset Address:                 0x5C000 (absolute: 0x6C210)
Size:                           0xE570
Flags:                          0x0
Found BL30 blob image at:       0x0006C210
Amlogic magic:                  @AML
Old signature:                  F227E1C7D9B03417A8AF7D3C2DD96C412B362FB974FD4C6A1E65F12EBFC601F7
Using BL301.bin:                Generic_28_29_bl301.bin
Use config.ini value:           usbpower = 0x01
Use config.ini value:           remotewakeup = 0xeb14ff00
Use config.ini value:           cec_osd_name = NEO T5
New signature:                  F227E1C7D9B03417A8AF7D3C2DD96C412B362FB974FD4C6A1E65F12EBFC601F7
Update of BL301.bin on eMMC is not needed, exit now...

¿Como puedo restaurar el bootloader de serie?

Hay dos opciones para restaurar el bootloader de serie.

  1. Mediante la copia de seguridad que se realiza cuando inyectamos el bl301. La copia la podemos encontrar en:
/flash/<CPU_SERIAL>_bl301.bin

Para restaurarla, solo tendriamos que conectarnos mediante ssh y ejecutar el comando dd:

dd if=/flash/<CPU_SERIAL>_bl301.bin of=/dev/bootloader conv=fsync bs=512
sync && reboot 

Después del reinicio, el bootloader se restaurada y quedara como si nunca hubiéramos realizado la inyección.

  1. Usar el método normal de recuperación de Amlogic con alguna de su herramientas "Burndcardmark" o "USB burning". Este procedimiento restaura el bootloader, pero también instalara el android de la imagen.

¿Como mapeo el encendido?

  1. Nos conectamos mediante ssh a nuestros dispositivo con EmuELEC y introducimos el siguiente comando ir-keytable con la opción -u:
ir-keytable -u
  1. Presionamos el botón del mando, que utilizaremos para encender el dispositivo. El terminal SSH nos devolverá algo como lo de a continuación.
Received IRMP code: remotewakeup='0xbf40fe01', decode_type='0x0', remotewakeupmask='0xffffffff'
  1. Con estos datos procederemos a editar el fichero config.ini

Editar config.ini

Tenemos dos formas para proceder este fichero una desde el PC y otro mediante SSH.

1. (Desde el PC) Este es el método mas sencillo, si tenemos EmuELEC en la SD. La quitamos de nuestro dispositivo y la conectamos en nuestro PC y procederemos a modificar el fichero config.ini con un editor de texto compatible con Unix como puede ser notepad++. Buscamos los valores de remotewakeup, decode_type y remotewakeupmaske. Y los sustituimos por los que nos ha dado el terminal y reiniciamos.

2. (Mediante SSH), lo primero que tenemos que hacer es que la partición /flash tenga permisos de escrituras y lo realizamos mediante este comando.

mount -o rw,remount /flash

Luego editamos los valores remotewakeup, decode_type y remotewakeupmask del fichero config.ini, por los valores que nos has dado el terminal.

nano /flash/config.ini

Guardamos la configuración con la combinaciones de botones "CTRL + X" y procederemos a reiniciar con el siguiente comando.

sync && reboot

Ya solo nos quedaría probar si el encendido funciona correctamente.

P.D: Es recomendable que guardemos el fichero config.ini, ya que nos podrá funcionar en próximas versiones o si restauramos el sistema. Para que el proceso se nos haga mas sencillo, ya que solo tendríamos que sustituir el ficheros

⚠️ **GitHub.com Fallback** ⚠️