Последовательный порт UART в ТВ-боксах


  Монтаж     Проблемы       Прошивка       Варианты     Log U-Boot     Help U-Boot  


3. Как прошить раздел ENV


Вариант 1-й. Полная перепрошивка ТВ-бокса. Для этого достаточно в распакованном образе прошивки заменить файл env.fex на откорректированный, заново собрать образ и прошить в устройство через PhoenixSuit (по кабелю) или через PhoenixCard (SD-картой).

Вариант 2-й. Прошить только раздел ENV с помощью PhoenixSuit Для этого в распакованном образе прошивки заменить файл env.fex на откорректированный, заново собрать образ и прошить в устройство через PhoenixSuit, отметив флажком только раздел ENV

Вариант 3-й. Прошить только раздел ENV утилитой Fastboot.exe
Этот способ в случае нормально работающей приставки наиболее предпочтителен, поэтому опишем его в деталях:

  • 1) подключиться к работающему устройству кабелем по USB

  • 2) в настройках приставки "Для разработчика" включить оба движка USB: Отладка по USB, USB device mode enable

  • 3) на ПК перейти в папку с утилитой ADB.exe 4) проверить работу ADB:

    C:\adb>adb devices
    List of devices attached
    1c001411631547d260d device

  • 5) утилитой ADB.exe перезагрузить приставку в режим bootloader (для перехода в fastboot)

    C:\adb>adb reboot bootloader
    При этом на экране подключенного к приставке телевизора или монитора появится картинка "друид в реанимации"
    друид в реанимации

  • 6) проверить работу fastboot:

    C:\adb>fastboot devices
    1c001411631547d260d fastboot

  • 7) прошить раздел ENV командой: fastboot flash env env.img
    здесь env.img - имя отредактированного файла Environment

    C:\adb>fastboot flash env env.img
    target reported max download size of 33554432 bytes
    sending 'env' (128 KB)...
    OKAY [ 0.016s]
    writing 'env'...
    OKAY [ 0.344s]
    finished. total time: 0.359s

    8) загрузить систему командой fastboot boot

    После этого, не отключая кабель от USB (от него питается приставка), подождать, пока произойдет полная загрузка и появится картинка главного экрана. Если да, то всё закончилось успешно, отключаем кабель и подключаем к приставке блок питания.


    Вариант 4-й.

    Редактирование раздела ENV в оболочке U-Boot

    Этот способ подходит для приставки, в которой по умолчанию ADB настроен на работу с сетью. В этом случае подключение кабеля между USB ПК и USB приставки не потребуется, однако необходимо подключение порта USB ПК через переходник к последовательному порту UART приставки.

    Примером такой приставки является T95Z Plus на основе SoC H618 (модифицированный H616) с операционной системой Android 12.

    Для редактирования ENV на ПК с Windows используется утилита adb.exe, а также терминал программы MobaXTerm (или аналогичной), настроенный на работу с UART приставки (скорость 115200).

    Пошаговая инструкция

  • 1. Подключить кабель с переходником между USB ПК и портом UART приставки

  • 2. Запустить на ПК приложение MobaXTerm и открыть в нём окно терминала

  • 3. Включить (подать питание) на приставку и подождать полной загрузки

  • 4. В ходе загрузки на терминале будут отображаться сообщения о процессе загрузки, которые завешатся переходом в консоль c приглашениеv console:/. (Здесь прервать загрузку нажатием пробела не удастся из-за bootdelay=0)/

  • 5. На экране подключенного к приставке монитора (телевизора) наблюдаем рабочий стол.

  • 6. Подключиться к локальной сети (если не подключена) по WiFi или Ethernet, найти и запомнить IP-адрес приставки в сети.

  • 7. На ПК открыть окно консоли (cmd) и подключиться к приставке по ADB командой adb connect 192.168.0.123, здесь 192.168.0.123 - IP-адрес (для примера)


    C:\adb>adb connect 192.168.0.123
    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
    ** daemon still not running
    error: cannot connect to daemon: cannot connect to 127.0.0.1:5037:
    Сделана попытка доступа к сокету методом, запрещенным правами доступа. (10013)

    Примечание. Такое сообщение об ошибке может появляеться, если не отключен брандмауэр. Теперь его отключим и повторим попытку:



    C:\adb>adb connect 192.168.0.123
    connected to 192.168.0.123:5555

    C:\adb>adb devices
    List of devices attached
    192.168.0.123:5555 device
    C:\adb>

    Таким образом, теперь мы подключились к приставке с помощью ADB по локальной сети.

  • 8. Теперь можно воспользоваться Windows-утилитой fastboot.exe для перевода приставки в режим fastboot консольной командой adb reboot bootloader. Устройство пытается перезагрузиться в режим fastboot, при этом ожидая команд fastboot по USB-кабелю, который не подключен. При этом на экране монитора появляется "друид в реанимации".


    [T1] reboot: Restarting system with command 'bootloader'
    [46]HELLO! BOOT0 is starting!
    ..............

    (здесь часть лога пропущена)
    ..............
    sunxi_fastboot_init
    recv addr 0x41000000
    send addr 0xbbf026d0
    start to display fastbootlogo.bmp
    54 bytes read in 1 ms (52.7 KiB/s)
    bmp_name=fastbootlogo.bmp size 190236
    190236 bytes read in 10 ms (18.1 MiB/s)
    delay time 0
    weak:otg_phy_config
    usb init ok
    sunxi_usb_ fastboot_status=0
    exit usb
    sunxi_fastboot_exit
    next work 0
    SUNXI_UPDATE_ NEXT_ACTION_NULL
    =>

    Поэтому загрузчик U-Boot переходит в режим командного интерфейса (оболочку), при этом на экране терминала появляется заветное приглашение '=>'. Т.е. нам удалось войти в оболочку U-Boot, и теперь можно воспользоваться его командами для редактирования переменных окружения.
    Примечание. Если => не появляется, то нужно в терминале нажать Ctrl/C

    Начиная с этого момента, окно консоли в Windows можно закрыть, дальше мы будем работать только в окне терминала MobaXTerm.

  • 9. Для проверки смотрим содержимое ENV командой U-Boot printenv
    Обратите внимание на строку с переменной bootcmd :
    bootcmd=run setargs_mmc boot_fastboot

    Которая означает, что при продолжении загрузки U-Boot, выполняя эту команду, будет пытаться перейти в режим fastboot, поэтому перед сохранением ENV эту переменную нужно будет исправить.

  • 10. Изменяем значения переменных bootdelay и loglevel (ради которых и затеян весь этот сыр-бор.
    Обратите внимание, что в команде env set не нужно вставлять символ '=' между именем переменной и её значением:


    => env set loglevel 2

    => env set bootdelay 5

    => print loglevel
    loglevel=2

    => print bootdelay
    bootdelay=5

  • 11. ВНИМАНИЕ ! Это важный пункт. Восстанавливаем значение переменной автозагрзуки:

    env set bootcmd run setargs_mmc boot_normal

  • 12. Делаем контрольное чтение переменных окружения командой printenv, в дампе которой проверяем значение переменных:
      loglevel=2
      bootdelay=5
      bootcmd=run setargs_mmc boot_normal

  • 13. Если всё правильно, то сохраняем переменные окружения ENV в энергонезависимую память командой env save.
    ВНИМАНИЕ ! Это обязательно, т.к. всё редактирование делалось в оперативной памяти. По этой команде массив переменных окружения будет записан в раздел ENV на загрузочном носителе (eMMC или SD), в зависимости от того, откуда происходила загрузка.

    ВНИМАНИЕ ! Настоятельно рекомендуется проделать все описанные процедуры первоначально используя загрузочную SD-карту (загрузка с которых поддерживается на приставках c H618 и Android 12.


    Вариант 5-й.

    Запись измененного файла ENV.img в консоли работающей приставки

  • 1) скачать файл env_t95z.img по ссылке: Загрузить файл ENV для T95Zplus (для ТВ-бокса T95ZPlus) или (для других приставок) исправить с помощью специального онлайн-сервиса:
    Конвертор файла переменных окружения ENV .

    ВНИМАНИЕ ! Этот измененный файл env_t95z.img - только для приставки T95Z Plus

  • 2) скопировать файл env_t95z.img на работающую приставку в папку Download (эти два пункта можно совместить, если скачивать сразу на приставку)

  • 3) подключить USB ПК через переходник к UART приставки

  • 4) запустить на ПК MobaXTerm и открыть окно терминала

  • 5) нажать ENTER для появления приглашения console:/

  • 6) сменить текущую папку на download командой

    console:/ $ cd storage/emulated/0/download

  • 7) проверить наличие файла env_t95z.img в текущей папке командой ls

    console: $ ls env_t95z.img

  • 8) предоставить рут-права командой su

    console: $ su console: #

  • 9) записать файл env_t95z.img в раздел eMMC командой dd

    dd if=env_t95z.img of=/dev/block/mmcblk0p3 conv=fsync

  • 10) перезагрузить приставку командой reboot

  • 11) в момент перезагрузки удерживать нажатым пробел

  • 12) отпустить пробел при появлении приглашения '=>'

  • 13) это означает, что вы успешно вошли в оболочку U-Boot

  • 14) проверить командой printenv, что в переменных окружения две переменных имеют значения:
    bootdelay=5
    loglevel=2