Установка Armbian на планшет Icoo D70gt. Часть 2

Продолжаем настройку

Поскольку предыдущая статья получилась очень уж объёмной, я решил разбить её на две части.

В этой части я рассмотрю некоторые аспекты настройки системы и устройств ввода, таких как кнопки планшета, тачскрин и G-сенсор.

armbian-config

Я уже использовал утилиту armbian-config, которая позволяет произвести некоторые настройки системы.

armbian-config

Пункт Timezone позволит настроить часовой пояс.

Пункт Install запускает процедуру установку системы на другие устройства. Например можно перенести систему на встроенную в планшет NAND память и не использовать для этого SD карту. Конечно в этом случае, можно будет распрощаться с Android-ом.

WiFi этот пункт я уже использовал, для подключения к точке доступа.

Hotspot создать свою точку доступа. В случае планшета - это не актуально.

Hold полезный пункт, позволяющий предотвратить обновление пакетов ядра и поддержки железа. Без “заморозки” можно при очередном обновлении окирпичить систему.

Softy установка пакетов приложений для решения типовых задач.

Monitor простой лог загрузки системы.

Diagnostics собирает информацию о системе, для отправки разработчикам Armbian. Не актуально, по причине специфичности железа, но можно поизучать самому или отправить друзьям.

Fexedit редактор script.bin. Но я предпочитаю делать это руками через консоль.

Lowlevel - время от времени в консоль валятся ошибки, предупреждения или просто информационные сообщения от ядра. Можно запретить их вывод.

Bootenv редактор файла /boot/armbianEnv.txt.

Network редактор файла /etc/network/interfaces.

Services управляет загрузкой системных сервисов при старте системы.

Welcome управляет информацией, которая будет отображена при логине в систему. Можно отключить лишнее, например здоровый баннер с надписью Cubieboard.

Nightly переключает систему на ветку нестабильных пакетов ночных билдов. На ваш страх и риск.

Switch позволяет выбрать свежее ядро для системы. Но там отсутствуют интересные возможности, такие как поддержка NAND.

Swap файл

Armbian по умолчанию использует swap-файл /var/swap. Т.е. когда оперативной памяти будет не хватать, система начнёт выгружать данные на SD карту или NAND память, что медленно и не полезно для таких устройств.

Что бы отключить использование свопа необходимо в файле /etc/fstab закомментировать строчку

#/var/swap none swap sw 0 0

и перезагрузить систему.

Имя системы

После установки имя системы cubieboard.

Что бы изменить его, надо отредактировать файл /etc/hostname и перезагрузить систему.

Устройства планшета

В принципе, программа минимум уже достигнута:

  • Работает WiFi.
  • Работает дисплей.

Кстати, что бы посмотреть на экране, что нибудь повеселее, чем приглашение ко входу можно дать из консоли SSH команду:

htop > /dev/tty1

И понаблюдать за загруженностью системы уже на экране планшета.

А можно быстренько протестировать фрейм-буфер командой которая заполнит экран мусором:

dd if=/dev/urandom of=/dev/fb0
dd: writing to ‘/dev/fb0’: No space left on device
9601+0 records in
9600+0 records out
4915200 bytes (4.9 MB) copied, 3.24301 s, 1.5 MB/s

И почистим его:

dd if=/dev/zero of=/dev/fb0 bs=64K
dd: error writing ‘/dev/fb0’: No space left on device
76+0 records in
75+0 records out
4915200 bytes (4.9 MB) copied, 0.0180896 s, 272 MB/s

Заодно можно оценить скорость заполнения.

Но отложим работу с дисплеем на потом, а займёмся другими устройствами планшета.

G-sensor

Он же акселерометр. В планшете установлен чип mma7660.

Для его использования достаточно подкючить модуль ядра:

modprobe mma7660

Если всё успешно, то в каталоге /dev/input появится дополнительное устройство event* (в моём случае event2), а так же устройство js* (js0). Т.е. с точки зрения ядра - акселерометр - это джойстик.

Что бы акселерометр был доступен сразу после загрузки системы следует добавить строчку mma7660 в файл /etc/modules-load.d/modules.conf.

Проверить работу акселерометра можно командой

evtest /dev/input/event2

Можно так же установить пакет apt install joystick и дать команду jstest --normal /dev/input/js0, но он подтянет за собой ещё клиентские библиотеки X-сервера и некоторые звуковые библиотеки.

Touch screen

В данном планшете используется контроллер ёмкостного тачскрина Goodix GT801 и это ещё одна причина, почему понадобилось legacy ядро - для него есть модуль.

Что бы модуль заработал, потребуется внести изменения в script.bin.

Я внёс следующие правки в d70gt_script.fex:

  • Секцию [ctp0_para] переименовал в [ctp_para].
  • Имя чипа ctp_name = "Goodix-TS-1GT801" переименовал в ctp_name = "Goodix-TS".
  • Изменил параметр ctp_screen_max_x = 1280.
  • Изменил параметр ctp_screen_max_y = 768.

Размеры тачскрина не соответствует реальным размерам дисплея. Это сделано специально, поскольку драйвер в составе armbian понимает только два разрешения: 800*480 и 1280*768. Конечно можно взять исходные коды ядра, добавить в драйвер нужное нам разрешение и пересобрать модуль. Но это я отложил на потом.

Теперь можно конвертировать скрипт fex2bin d70gt_script.fex /boot/script.bin и перезагрузить планшет.

Проверим, что модуль успешно загружается:

modprobe goodix_touch

Так же проверим сообщения ядра:

dmesg
[  559.234127] ===========================goodix_ts_init=====================
[  559.239105] ctp_fetch_sysconfig_para.
[  559.248256] ctp_fetch_sysconfig_para: after: ctp_twi_addr is 0x55, dirty_addr_buf: 0x55. dirty_addr_buf[1]: 0xfffe
[  559.252615] ctp_fetch_sysconfig_para: ctp_twi_id is 2.
[  559.257551] ctp_fetch_sysconfig_para: screen_max_x = 1280.
[  559.271373] ctp_fetch_sysconfig_para: screen_max_y = 768.
[  559.284798] ctp_fetch_sysconfig_para: revert_x_flag = 1.
[  559.298069] ctp_fetch_sysconfig_para: revert_y_flag = 0.
[  559.311752] ctp_fetch_sysconfig_para: exchange_x_y_flag = 0.
[  559.328569] goodix_ts_init: after fetch_sysconfig_para:  normal_i2c: 0x55. normal_i2c[1]: 0xfffe
[  559.330023] ctp_reset.
[  559.361478] ctp_wakeup.
[  559.572996] i2c-core: driver [Goodix-TS] using legacy suspend method
[  559.588266] i2c-core: driver [Goodix-TS] using legacy resume method
[  559.603840] ctp_detect: Detected chip Goodix-TS at adapter 2, address 0x55
[  559.623069] ===============================GT801 Probe===========================
[  559.636671] Begin goodix i2c test
[  559.647005] ===== goodix i2c test ok=======
[  559.662814] input: gt80x as /devices/virtual/input/input4
[  559.720814] ctp_set_irq_mode: config gpio to int mode.
[  559.735799] ctp_set_irq_mode, 214: gpio_int_info, port = 8, port_num = 21.
[  559.748347]  INTERRUPT CONFIG
[  559.756994] Read Goodix version
[  559.832230] Goodix-TS 2-0055: GT80X Version: GT801_1R08_2011121501_Goodix_Tech
[  559.852013] ========Probe Ok================

Механические клавиши

Поддержка клавиш планшета осуществяется загрузкой модуля sun4i_keyboard.

Система будет воспринимать их как клавиатурные.

Проверить их функционирование можно командой:

evtest /dev/input/event4
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "sun4i-keyboard"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 28 (KEY_ENTER)
    Event code 102 (KEY_HOME)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 139 (KEY_MENU)
    Event code 217 (KEY_SEARCH)
Properties:
Testing ... (interrupt to exit)
Event: time 1509366604.502185, type 1 (EV_KEY), code 1 (KEY_ESC), value 1
Event: time 1509366604.502204, -------------- EV_SYN ------------
Event: time 1509366604.744340, type 1 (EV_KEY), code 1 (KEY_ESC), value 0
Event: time 1509366604.744354, -------------- EV_SYN ------------
 
comments powered by Disqus