Поддержка русскоязычных пользователей

Не знаю как выразить - может и глупо звучит - но ощущение что сами жидкие кристаллы с ума сходили когда на панельку подавались неправильные тайминги при запуске Ubuntu. Возможно было какое то насыщение их - прям да же не знаю. Еще раз провел такой эксперимент - заметил такую закономерность - сразу после перезагрузки в андроид после ubuntu - просто дикое мерцание панели. Но постепенно, в течении 3-х часов оно исчезало (пробовал всяко и с обесточивание полным, и перетыканием шлейфа ) - через 3 часа - все, экран приходил в норму. Почему так - даже не знаю.

PS: Если удасться решить проблему с NVMe - то вообще отличная будет железка под мои нужды. Буду пробовать AOSP собрать с ядром 5.10 - посмотрю что как. Хотя собирать Pie было тем еще приключением - 3 дня бился что бы его собрать - все падало при сборке с SIGILL

1 Like

Удачи тебе, приятель! :slightly_smiling_face::+1:

1 Like

Всем доброго дня!

VIM3 Ubuntu 20 4.9 EMMC (Krescue) + KODI

Пытаюсь принимать сигналы c ИК-пульта.

lirc не распознает устройство, называется девайс в системе тоже довольно странно - aml_keypad. Живет здесь /sys/devices/platform/ff808040.rc/input/input1, драйвера тут /sys/bus/platform/drivers/meson-remote/ff808040.rc

При этом в dmesg коды исправно прилетают под именем meson-remote, но я не понимаю как их замапить например на выключение (power-off).

Пробовал по схеме из соседнего треда VIM2 Linux OS with working LIRC and I2S+SPDIF - #4 by elektryk

Изначально ни ir-keymap ни evtest устройства не находили. Пошаманил с конфигами lirc, с правами, теперь evtest /dev/input/event1показывает поддерживаемые команды (большой список) и имя устройства (aml_keypad)

Создал конфиг /etc/ir-keytable.conf с одной строчкой:

scancode 0xbf40 = KEY_POWER (0x74)

где 0xbf40 это IR код кнопки, а 0x74 как я понимаю код действия (события).

В витоге команда ir-keytable -c не находит устройств, даже с указанием --sysdev=/dev/input/event1, а команда ir-keytable -vw /etc/ir-keytable.conf падает с Segmentation fault, в режиме verbose пусто.

В jojurnalclt есть такое

Apr 04 20:24:03 Khadas lircd-0.10.1[5922]: Warning: can't get exclusive access to events coming from '/dev/input/event1' interface
Apr 04 20:24:03 Khadas lircd-0.10.1[5922]: Info: removed client
Apr 04 20:24:03 Khadas lircd-0.10.1[5922]: Info: closing '/dev/input/event1'

Есть ощущение что я делаю все это неправильно…

Задача простая - выключать устройство по кастомному IR коду. Включается девайс уже исправно через правки в u-boot.

В общем need help… @hyphop кажется ты разбираешься в этом лучше всех

  1. lirc - не нужен
  2. evtest - смотри коды событий и на их основании генерируй конфиг кодов - например конфиг из Krescue (сразу на несколько пультов) для ir-keytable
# table keyes, type: nec
scancode 0x0001 = KEY_ESC (0x01)
scancode 0x0002 = KEY_DOWN (0x6c)
scancode 0x0003 = KEY_UP (0x67)
scancode 0x0007 = KEY_ENTER (0x1c)
scancode 0x000b = KEY_PAGEDOWN (0x6d)
scancode 0x000e = KEY_LEFT (0x69)
scancode 0x0013 = KEY_TAB (0x0f)
scancode 0x0014 = KEY_POWER (0x74)
scancode 0x001a = KEY_RIGHT (0x6a)
scancode 0x0048 = KEY_HOME (0x66)
scancode 0x0058 = KEY_PAGEUP (0x68)
scancode 0x005b = KEY_MUTE (0x71)

scancode 0x0100 = KEY_1 (0x02)
scancode 0x0101 = KEY_POWER (0x74)
scancode 0x0104 = KEY_4 (0x05)
scancode 0x0106 = KEY_3 (0x04)
scancode 0x0107 = KEY_2 (0x03)
scancode 0x0108 = KEY_7 (0x08)
scancode 0x0109 = KEY_ESC (0x01)
scancode 0x010a = KEY_6 (0x07)
scancode 0x010b = KEY_5 (0x06)
scancode 0x010e = KEY_9 (0x0a)
scancode 0x010f = KEY_8 (0x09)

#scancode 0x010d = KEY_PAGEDOWN (0x6d)
scancode 0x010d = KEY_VOLUMEUP
#scancode 0x0114 = KEY_PAGEUP (0x68)
scancode 0x0114 = KEY_VOLUMEDOWN

scancode 0x010c = KEY_PREVIOUSSONG
scancode 0x011f = KEY_NEXTSONG
scancode 0x0153 = KEY_F1

scancode 0x011c = KEY_PLAYPAUSE
scancode 0x0110 = KEY_STOP
scancode 0x0112 = KEY_MUTE

scancode 0x0103 = KEY_BACK
scancode 0x0105 = KEY_FORWARD
scancode 0x015b = KEY_MENU

scancode 0x0113 = KEY_0 (0x0b)
scancode 0x0115 = KEY_ENTER (0x1c)
scancode 0x0117 = KEY_UP (0x67)
scancode 0x011a = KEY_DOWN (0x6c)
scancode 0x0141 = KEY_RIGHT (0x6a)
scancode 0x0142 = KEY_LEFT (0x69)
scancode 0x0143 = KEY_TAB (0x0f)
scancode 0x0151 = KEY_BACKSPACE (0x0e)
scancode 0x015a = KEY_HOME (0x66)

scancode 0xb280 = KEY_PAGEDOWN (0x6d)
scancode 0xb281 = KEY_PAGEUP (0x68)
scancode 0xb282 = KEY_HOME (0x66)
scancode 0xb288 = KEY_MUTE (0x71)
scancode 0xb299 = KEY_LEFT (0x69)
scancode 0xb29a = KEY_ESC (0x01)
scancode 0xb2c1 = KEY_RIGHT (0x6a)
scancode 0xb2c5 = KEY_TAB (0x0f)
scancode 0xb2ca = KEY_UP (0x67)
scancode 0xb2ce = KEY_ENTER (0x1c)
scancode 0xb2d2 = KEY_DOWN (0x6c)
scancode 0xb2dc = KEY_POWER (0x74)
  1. ir-keytable -c; ir-keytable -w /etc/ir-keytable.conf
  2. далее рекомендую triggerhappy - очень удобная штука apt-get install triggerhappy man triggerhappy

мой конфиг пример для него также из Krescue

cat etc/triggerhappy/triggers.d

KEY_FN        1       echo HELLO > /tmp/hello.txt
KEY_POWER     1       poweroff
KEY_HOME      1       /opt/uinput_send F1
...

Удачи

1 Like

круто! большое спасибо за оперативный полный ответ! пойду пробовать, отпишусь.

Второй вопрос о другом сетапе с VIM3. Иногда после беспомощных попыток подлатать Linux поглядываю на coreELEC. В нем ведь почти все из коробки, хотя с завязанными руками…

Так вот абсолютно не понятно как добавить в нем overlay для PoE Ethernet. Если для linux есть /boot/env.txt то для CoreELEC как я понял подойдет только сборка и добавление dtb.

Но нигде пока что не нашел информации о том как собрать подходящий dtb с одним нужным оверлеем m2x-eth и как его корректно установить в coreELEC.

Может есть пара ссылок котоыме помогут прояснить процесс?

я не уверен что этого будет достаточно - нужно чтоб еще linux kernel имел поддержку

может есть kernel module для m2x-eth?

конечно там все стандартно - но ядро должно быть собрано правильно - в coreelec я это дело не проверял (может и заработать без проблем) нужно проверять

я готов проверить, но мне нужно понять как добавить dtb для m2x в coreelec

если я праивльно понимаю придется декомпилировать dtb для всего vim3, декомпилировтаь m2x.dtbo из linux, добавлять код m2x в основной dts и компилировать заново, потом с ним руками ставить coreelec.

другого способа пока не придумал.

в иделе конечно бы понять как добавить нужный dtb в coreelec уже установленный на emmc

все верно :wink: как-то так и надо

1 Like

В итоге поковырявшись обнаружил, что сейчас ресивер доступен в виде симлинка по пути /sys/class/remote/amremote

sntx@Khadas:~$ tree /sys/class/remote/
/sys/class/remote/
└── amremote -> ../../devices/virtual/remote/amremote

при этом ir-keytable ожидает его по пути /sys/class/rc/rc* и поэтому не находит совсем

sntx@Khadas:~$ ir-keytable -v
Couldn't find any node at /sys/class/rc/rc*.
No devices found

sntx@Khadas:~$ ir-keytable -v --sysdev=/dev/input/event0
Couldn't find any node at /sys/class/rc/rc*.
No devices found

Добалвение аргумента --sysdev /dev/input/event0 ничего не меняет, аргумент --device в последних версиях ir-keytable выпилен поэтому явно указать путь до sysfs невозможно.

Пытаюсь понять, есть ли способ создать симлинк на нужное устройство в sysfs, и пока что никаких способов не нашел…

Вероятно проблема в драйвере ресивера, в том как он регистрируется (класс remote и имя amremote вместо rc и rc0).

ubuntu 20 focal minimal 4.9 emmc krescue

нет тут все совсем не так как в mainline (coreelec исползуют vendor kernel + amremote driver ) ir-keytable - в это случае бесполезна

сори что запутал, но здесь я не про coreELEC, его я еще не поставил. Проблема с IR была и есть на Ubuntu 20 Focal minimal 4.9 eMMC из Krescue.

У меня сейчас стоит Ubuntu в которой я пытаюсь поднять все необходимые сервисы и периферию, чтобы не ставить coreELEC.

Периодически я задумываюсь о переустановке, заранее пытаюсь продумать подводные камни в coreELEC но изначально не хочу терять полноценный linux.

так тотже vendor kernel - надо смотреть что там за конфиг ядра

не совсем понимаю как это проверить, четсно говоря

я на днях гляну что там и как - тогда отпишу - что делать OK

спасибо! буду ждать)

Интересно когда в AOSP можно будет собрать mainline kernel что бы все заработало на VIM3L. Так то видно что прогресс идет, в 5.12 rc6 уже и драйвер панели TS050 пришили, но что то мне подсказывает до счастья еще далеко :frowning:

У кого нить получалось завести suspend-to-disk ака hibernation на VIM3(l) ? попробовал, собрал ядро с CONFIG_HIBERNATION=y и CONFIG_INSTABOOT=y (@hyphop - не знаешь что это за фишка от Amlogic ? ) - в /sys/power/state появилась поддержка disk

console:/ # cat /sys/power/state
freeze mem disk

пытаемся уснуть на диск - и облом, драйвера все выключились, процы тоже почти уснули - образ hibernate почти готов - и облом

[ 1906.938702@0] aml_tdm_platform_suspend tdm:(2)
[ 1906.943110@0] aml_tdm_platform_suspend tdm:(1)
[ 1906.947532@0] aml_tdm_platform_suspend tdm:(0)
[ 1906.952077@0] suspend inter = 0
[ 1906.955067@0] vpu: suspend clk: 666666656Hz(0x100)
[ 1906.960013@0] PM: freeze of devices complete after 541.224 msecs
[ 1906.967403@3] PM: late freeze of devices complete after 1.578 msecs
[ 1906.972909@2] amlogic-pcie-v2 fc000000.pcieA: the device class is not reported correctly from the register
[ 1906.981807@2] amlogic-pcie-v2 fc000000.pcieA: amlogic_pcie_suspend_noirq
[ 1906.990115@2] PM: noirq freeze of devices complete after 18.048 msecs
[ 1906.994765@2] Disabling non-boot CPUs …
[ 1907.020437@0] CPU1: shutdown
[ 1907.039775@0] Retrying again to check for CPU kill
[ 1907.039798@0] CPU1 killed.
[ 1907.080339@0] CPU2: shutdown
[ 1907.099770@0] Retrying again to check for CPU kill
[ 1907.099793@0] CPU2 killed.
[ 1907.136274@0] CPU3: shutdown
[ 1907.155762@0] Retrying again to check for CPU kill
[ 1907.155785@0] CPU3 killed.
[ 1907.169597@0] PM: Creating hibernation image:
[ 1907.169597@0] PM: Need to copy 66424 pages
[ 1907.169597@0] Unhandled fault: external abort on non-linefetch (0x008) at 0xc5100000
[ 1907.169597@0] pgd = e5474000

Судя по коду ARM - это

  1. 0b000111 translation fault, page

вообщем пока облом с этим тоже, что то в консерватории не работает.

Поставил чистый coreELEC из Krescue на eMMC для проверки m2x-eth. Предварительно сохранил дамп Ubuntu для наших дальнейших экспериментов с IR.

После установки CoreELEC пробую как-либо в него добавить m2x-eth.dtbo который забрал из Ubuntu (декомпилировал его в m2x-eth.dts). Почитал про синтаксис DTS. Пробовал сдампить /dev/dtb, перекомпилировать его с добавлением кода из m2x-eth.dts.

Исходник из /dev/dtb:

...

eth: ethernet@ff3f0000 {
	compatible = "amlogic, g12a-eth-dwmac\0snps,dwmac";
	reg = <0x00 0xff3f0000 0x00 0x10000 0x00 0xff634540 0x00 0x08 0x00 0xff64c000 0x00 0xa0>;
	reg-names = "eth_base\0eth_cfg\0eth_pll";
	interrupts = <0x00 0x08 0x01>;
	interrupt-names = "macirq";
	status = "okay";
	clocks = <0x02 0x38>;
	clock-names = "ethclk81";
	pll_val = <0x9c0040a 0x927e0000 0xac5f49e5>;
	analog_val = <0x20200000 0xc000 0x23>;
	pinctrl-names = "external_eth_pins";
	pinctrl-0 = <0x18>;
	mc_val = <0x1621>;
	internal_phy = <0x00>;
	phandle = <0x92>;
};

...

__symbols__ {
	...
};

Добавил в конец после __symbols__:

fragment@0 {
	target = <&eth>; // также пробовал target-path = "ethernet@0xff3f0000"

	__overlay__ {
		status = "okay";
		mc_val = <0x4be04>;
		internal_phy = <0x01>;
	};
};

__fixups__ {
	ethmac = "/fragment@0:target:0";
};

Скомпилировал, залил обратно в /dev/dtb, перезагрузился - не помогло, сеть в обычном порту работает, в m2x нет.

Нашел что есть /flash/dtb.img, сдампил и декомпилировал, заметил что его исходник сильно отличается от исходника /dev/dtb. Подумал что /dev/dtb это результат нескольких преобразований над /flash/dtb.img, начал искать где и как они происходят.

Нашел /flash/boot.ini и /flash/boot.scr в которых увидел что /flash/dtb.img грузится через fatload вместе с другими dtb. Почитал про fatload, нашел что есть способ им же добавить dtbo.

Скрипт править не стал, я не особо силен в bash, но как понимаю в него можно добавить поддержку dtbo файлов.

Вопросы:

  1. Что я делаю не так?
  2. Правильный ли я указал target и подходит ли этот mc_val?
  3. Как корректно добавить m2x-eth в уже установленный coreELEC?
  4. Можно ли добавить поддрежку m2x-eth в сборку coreELEC из Krescue?

Заранее спасибо!