четверг, 20 июня 2019 г.

meld 3.20 Classic Edition

После перехода на ubutnu 18.04 версия meld обновилась с 1.8 до 3.18
Я часто пользовался вводом пути до папки/файла прямо на панеле. В новой версии доступен только выбор файла через меню выбора.
Можно пользоваться старой версией, но я для интереса решил добавить этот функционал в новой.

За основу взял ветку 3.20

- Добавил текстовое поле для пути до папки.
Теперь можно легко менять начало пути. Переход по ентеру или при вводе, если понимаю что это папка (можно отключить в настройках)
- Добавил текстовое поле для пути до файла.
Теперь видно, что за файл и можно изменить путь и запустить сравнение. Изначально для файлов с одинаковым именем не понятно, где какой.
- Добавил возможность открыть папку, содержащую файл.
- При сравнении каталогов, для прогрессбара добавлена надпись, отображающая название сканируемого файла.
- Исправлена ошибка с отображением размера файла > 4 Гб
- Меню приведено к более классическому виду.

Обновлен перевод.

Исходники:

https://github.com/andr7e/meld 

Установка/запуск

git clone https://github.com/andr7e/meld

Быстрый запуск (Не подтянется перевод):
cd bin
python3 ./meld

Для установки в систему поставить пакеты:

python3-distutils
intltool
libxml2-utils
libglib2.0-dev-bin

Установка:
sudo python3 setup.py install --prefix=/usr

DEB PACKAGE

-----------------------------

After upgrading to ubutnu 18.04, the meld version was updated from 1.8 to 3.18
I often used the input path to the folder / file directly on the panel. In the new version, only file selection is available through the selection menu.
You can use the old version, but I decided to add this functionality to the new one for interest.

For the base I took the branch 3.20

- Added a line edit for the folder path.
Now you can easily change the beginning of the path. Run comparisons by enter key or by entering text, if I found that this is a folder (can be disabled in the settings)
- Added a line edit for the file path.
Now you can see file path and you can change the path and run the comparison. For standard version, it is not clear where which file.
- Added the action to open the folder containing the file.
- When run folder comparison, for the progressbar added info with current scanning file.
- Fixed bug with displaying file size > 4 GB

Build/install

git clone https://github.com/andr7e/meld

Quick run (translation not loaded):
cd bin
python3 ./meld

For build and install to system need install packages:

python3-distutils
intltool
libxml2-utils
libglib2.0-dev-bin

Build and install:
sudo python3 setup.py install --prefix=/usr

суббота, 7 апреля 2018 г.

Wi-Fi Monitor

Информация о пдключении к Wi-Fi, доступные сети, подключенные устройства.



Общее
- информация о пдключении к Wi-Fi .

Сети
- список доступных сетей.
* Для некоторых устройств доступна модель роутера.

Устройства
- список устройств, подключенных к вашей Wi-Fi сети.

CH 2.4/5.0
- график доступных сетей сгрупперованных по каналам для 2.4 и 5.0 ГГц.


Требования :
- Android 4.0.3 и выше

Разрешения :
- INTERNET требуется для получения информации о подключении.
- ACCESS_WIFI_STATE требуется для получения инфы о подключении к wi-fi.
- ACCESS_COARSE_LOCATION требуется для получения списка достуных сетей. Для 6.0 и выше.

https://play.google.com/store/apps/details?id=ru.andr7e.wifimonitor

среда, 14 декабря 2016 г.

Sensor Test

Приложение для тестирования датчиков.

Пока поддерживает основные датчики:
Акселерометр
Датчик освещения
Датчик приближения
Магнитометр
Гироскоп

Сначала планировалась, как составная часть DeviceInfoHW.
При сборке ядра мне удобно тестировать каждый датчик по отдельности и желательно в наглядной форме.
С его помощью наконец-то настроил гироскоп в своем ядре.

Думаю обычным пользователям тоже будет интересно.

В настройках можно выбрать язык (русский, английский), по умолчанию системный.

Скриншоты:




Google Play:
https://play.google.com/store/apps/details?id=ru.andr7e.sensortest

суббота, 27 февраля 2016 г.

Qt 5.7 on ubuntu 12.10


При запуске QtCreator ошибка:

This application failed to start because it could not find or load the Qt platform plugin "xcb"

Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so

тянет за собой libEGL.so.1

У нас она отсутствует, ставим пакет mesa-utils-extra

----------

А если ваша версия уже не поддерживается, то прописываем репозитории, где еще поддерживаются старые релизы.

/etc/apt/sources.list

## EOL upgrade sources.list # Required deb http://old-releases.ubuntu.com/ubuntu/ quantal main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ quantal-updates main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ quantal-security main restricted universe multiverse # Optional #deb http://old-releases.ubuntu.com/ubuntu/ quantal-backports main restricted universe multiverse deb http://mirrors.digitalocean.com/ubuntu-old/ quantal main restricted universe multiverse deb http://mirrors.digitalocean.com/ubuntu-old/ quantal-updates main restricted universe multiverse deb http://mirrors.digitalocean.com/ubuntu-old/ quantal-security main restricted universe multiverse

Возможно теперь получится обновиться на более свежий релиз.

Device Info HW

Показывает информацию об устройстве, в том числе об аппаратной составляющей.
Определяет дисплеи, тачскрины, камеры, датчики...

Вкладки:

- Общее
Основная информация об устройстве.

- ЦП
 Информация о ЦП и ГП.

- Система
 Информация об Android.

- Память
 Информация об озу, дисках, пути монтирования.

- Камера
 Информация об аппаратных и программных характеристиках.

- Батарея
Экспериментально:
Скорость зарядки / разряда батареи.
Профиль батареи из ядра.

- Температура

- Датчики
Информация о датчиках и тесты. (Взаимодействует с мои приложением Sensor Test 1.2 и выше)

- Разметка
 Информация о разметке памяти. (Для mtk, rockchip)

- Драйверы 
Используемые драйверы платформы.
 
- Приложения
 Список установленных приложений. С возможностью фильтрации.
Последний пункт открывает список системных.

- Напряжение питания (PMIС)
Информация о напряжении регуляторов питания.
 
- Сеть
Иинфомации о подключении к wi-fi.

- Устройства ввода
Список устройств ввода, могут быть тачскрины, датчики.
На некоторых устройствах доп. информация о моделе тачскрина и датчиках.

А также возможности:

- Панель навигации.

- Для mtk: кнопка вызова инженерного меню.

- Вы можете перейти к другим вкладкам с главной по соответствующему пункту. С других вкладок в системные: батарею, диски, общая инфа.

- Расширенная информация о батарее:
a) Cкорость зарядки / разряда батареи.
Для 5.0+ через Android API. Для mtk отдельный вариант.
Cкорость разряда = текущее потребление. Iср = Iп
Скорость зарядки = ток зарядки - текущее потребление.  Icз = Iз - Iп
б) Профиль батареи из ядра mtk, qcom (на некоторых устройствах модель батареи).
Информация носит справочный характер. И касается только заводской батареи.

Настройки:

- Отображение i2c адреса устройства
-  root доступ
(Требуется для определения дисплея на устройствах на большинстве устройств, камер на qcom и отображения командной строки ядра на всех остальных)

Загрузка информации об устройстве:
Вы можете загрузить информацию о вашем устройстве. Доступна в меню инфо-центр. Информация сохраняется в БД, и доступна на сайте http://deviceinfohw.ru/
Там вы можете посмотреть все протестированные устройства.

Примечание:

- Старается показать только активные устройства (если в ядре включено несколько чипов, будут только задействованные)

- Не для всех устройств возможно получение полной информации. Это зависит от платформы, вендора.

- На некоторых устройствах 7.0+ запрещено чтение sysfs и некоторая информация не доступна. В процессе решения.

Платформы:
Mediatek, Rockchip
Qualcomm, Exynos, Intel и др.  (частично)

Требования :
- Android 4.0.3 и выше

Разрешения :
- INTERNET требуется для загрузки информации об устройстве. (Используется только, тогда когда пользователь нажимает кнопку для загрузки информации)
- CAMERA требуется для получения характреистик камеры. (< android 5.0)
- ACCESS_WIFI_STATE требуется для получения инфы о подключении к wi-fi.

Скриншоты:

понедельник, 4 января 2016 г.

Мои проекты: кастомные ядра Android

Custom kernels

mt6732

ZTE Blade Q Lux 4G
MTS Smart Run 4G
ZTE Blade v2 Lite

mt6735/6753

Homtom HT7 Pro / HT3 Pro
ZTE Blade Z7 / X7
Elephone P6000 Pro

mt6589

Fly IQ446
Highscreen Alpha Rage
Phillips W6500

rk3188

Prestigio PMP5785

суббота, 5 декабря 2015 г.

MTK devices database

Show device list with hardware info, drivers (LCM, TOUCHPANEL, CAMERA, SENSORS)
You can add ProjectConfig.mk after parsing it will be in database.                           
And search device with similiar drivers.
Now about 50 devices.

http://mtkdevices.site90.com

New
deviceinfohw.ru

пятница, 6 ноября 2015 г.

Build Android L mtk

mt6752

pack / unpack scripts

Carliv Image Kitchen

for 4.4
https://github.com/cofface/android-mtk-tools

Android L 5.X

GCC arm64

https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/

arm (arm64)
kernel/arch/arm/configs/project_defconfig

Projects
drivers/misc/mediatek/mach/6752

arch/arm/mach-mt6582/

for android build

1. device
device/brand/project/

ProjectConfig.mk

2. vendor
mediatek
brand

hal
mediatek/proprietary/custom/mt6752

fstab
alps/vendor/mediatek/proprietary/platform/mt6752/external/fstab/

mt6582/92

start mbr = preloader size

mach-mt6582/PROJECT/partition/cust_part_mbr.c

u64 MBR_START_ADDRESS_BYTE = 20480 * 1024;  // 0x1400000

пятница, 19 июня 2015 г.

Яркость подсветки на ноутбуке (Linux)

Идем в /sys/class/backlight

brightness     - current
max_brightness - max

HP G62 (0 - 10)


Для установки после загрузки, вписываем в /etc/rc.local
 
echo 3 >  /sys/class/backlight/acpi_video0/brightness

четверг, 28 мая 2015 г.

unpack zImage


You can also use it for boot.img

Compressed format:

gzip

stock_kernel$ path_to/arm-linux-androideabi-objdump -EL -b binary -D -m armv5t ./zImage | grep 8b1f
    4a28: 00088b1f andeq r8, r8, pc, lsl fp

4a28 =  18984(10)

stock_kernel$ dd if=./zImage of=piggy.gz bs=1 skip=18984

stock_kernel$ gunzip piggy.gz 

Источник:
http://morgue.openinkpot.org/wiki/Documentation/ZImageFormat

xz

Spec
header   FD377A585A00
footer     595A

Find header and footer offsets in hex editor (example: 16172 and 3800782)
footer

count=3800782 - 16172 + 2

dd if=./kernel of=piggy.xz bs=1 skip=16172 count=3784612

unxz piggy.xz


среда, 20 мая 2015 г.

PHP uploads permission

Ubuntu 14.04
$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/site/uploads/";
Who is Apache process owner:
echo exec('whoami');
In my case it's www-data,  then change the owner of the destination directory:
chown www-dataupload_dir
and set permission:
chmod 755 upload_dir

воскресенье, 17 мая 2015 г.

adb on Ubuntu

Install

sudo apt-get install android-tools-adb android-tools-fastboot

Device list

adb devices 

Terminal

adb shell

Инcтрукция по восстановлению тачскрина Goodix GT9XX

Скорее всего вы установили прошивку с чужим ядром. И вам не помогла прошивка с родным ядром.

Теперь ваш конфиг скорее всего отличается от родного.
Посмотреть конифиг тача можно через терминал: cat /proc/gt9xx_config (только mtk)
Или в программе gtp_tools.

Он начинается с последовательности байт:
0x41 0x1C 0x02 0xC0 0x03

0x41 - 65 версия
0x1C 0x02 - 540 разрешение по горизонтали
0xC0 0x03 - 960 разрешение по вертикали

Тач должен хоть как-то работать, чтобы нажать кнопки, если есть поддержка otg, то это проще, можно подключить мышь.

1. Устанавливаем gtp_tools
Для нас подходит gtp_tools_v2.6_20140126_special https://yadi.sk/d/9Crpw-lffmtFx

2. Идем в пункт Firmware update
Нажимаем refresh, видим IC Version: 913_1020
у нас тач GT913 и прошивка 1020.

Если версия прошивки совпадает с родной идем дальше.

3. Идем в пункт Config Settings
Нажимаем read, данные считались.
На вкладке Normal Config у нас есть:
65 версия
540 разрешение по горизонтали
960 разрешение по вертикали

4. Нажимаем browse, выбираем нажимаем browse с родным конифгом.

Родной конфиг берем с рабочего устройства, в этом же пункте нажать save (сохраняет бэкап конфига в файл).
Родной конфиг для Fly IQ446 https://yadi.sk/d/c3VATnEAfgYPm (подходит для большинства, но есть исключения)

Нажимаем send.

5. Если ничего не изменилось, смотрим версию у вас и родного конфига. 
И меняем версию в файле родного конфига на вашу в hex. 
Пример: родной 0x41 = 65, чужой 0x49 = 73 => заменяем 0x41 на 0x49.

И устанавливаем его.

четверг, 7 мая 2015 г.

Decompiling dtb


Get dts by decompiling dtb

Command
dtc -I dtb -O dts am335x-boneblack.dtb > /root/am335x-boneblack.dts

Full text:
http://wiki.sharedcircuits.com/index.php/BeagleBone_Black

четверг, 19 марта 2015 г.

Git

git help

Commit to remote

git add
git commit -m "changes"
git push

git add
git rm
git rm $(git ls-files --deleted)  //rm all
git add $(git ls-files --modified)

Multiline (With description)

git config --global core.editor "gedit -w"
git commit

Sync with remote

git fetch
git checkout
git pull

login
 
git remote add origin https://user@hostname/user/repo.git

Brunches

New brunch
git checkout -b cm-12.1




git push -u origin <branch>

Switch
git checkout cm-12.1

Push to remote
git push  https://github.com/andr7e/android_vendor_fly_iq446 cm-12.1


Syncing a fork

Configuring

git remote -v // show

git remote add upstream https://github.com/CyanogenMod/android_frameworks_native.git

Syncing

git fetch upstream

git merge upstream/cm-12.1

Man:
https://help.github.com/articles/syncing-a-fork/
https://help.github.com/articles/configuring-a-remote-for-a-fork/


Conflicts
https://githowto.com/ru/resolving_conflicts

svn

svn st | grep ^! | awk '{print " --force "$2}' | xargs svn rm
 
Bash 
Статистика по исходникам
Кол-во файлов в папке:
find . -type f | wc -l
 
Кол-во строк во всех файлах:
find . -type f -exec wc -l {} \; | awk 'BEGIN{sum=0}{sum+=$1;}END{print sum;}'

вторник, 3 марта 2015 г.

Ubuntu 14.04 x86_64 run 32bit elf

Ubuntu 14.04 x86_64 run 32bit elf

1. sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

 (early version sudo apt-get install ia32-libs)

2. sudo apt-get install lib32stdc++6

понедельник, 23 февраля 2015 г.

Android graphic system


Summary (good slide)

https://source.android.com/devices/graphics/

1) system/core

2) frameworks/native

SurfaceFlinger
-  window manager

surfaceflinger + libsurfaceflinger.so

/services/surfaceflinger

3) vendor specific library

GPU blobs:
libMali.so
pvr libs

hwcomposer.PLATFORM.so
gralloc.PLATFORM.so

HWComposer

Gralloc

- gralloc alloc: allocates graphic buffers
- gralloc framebuffer: interface to Linux framebuffer device, e.g. /dev/graphics/fb0

- gralloc alloc allocates all graphic buffers using a kernel memory manager, typically ION


4) hardware/libhardware/include/hardware/
gralloc.h
hwcomposer.h


Details

About all
http://events.linuxfoundation.org/sites/events/files/slides/android-graphics-abs-2014_0.pdf

About surfaceflinger, BufferQueue, GraphiBuffer
https://charleszblog.wordpress.com/2014/02/23/understanding-android-internals-surfaceflinger-iii/

About EGL, eglSwapBuffers
https://katatunix.wordpress.com/2014/09/17/lets-talk-about-eglmakecurrent-eglswapbuffers-glflush-glfinish/

Debug

setprop debug.egl.trace 1

show all gl call

пятница, 20 февраля 2015 г.

Портирование ядра mtk

Портирование ядра

Узнать инфу об устройстве

Самый простой способ установить мою программу Device Info HW, в настройках включить адреса i2c, если есть root, то включить и его, требуется для дисплея и для полной ифнормациии для новых устройств с android 7.0+

Старый вариант:

а) Чтобы узнать для какого оборудования собрано ядро в mtk, можно посмотреть ProjectConfig.mk, расположенный в /system/data/misc/

б) На каких шинах i2c висят устройства /sys/bus/i2c/drivers

в) свой lcm, если в проекте несколько
cat /proc/cmdline

Сборка ядра

Скачиваем исходники:

git clone https://github.com/andr7e/acer_v370_kk

и компилятор gcc:
https://android-build.…toolchain-4.9-2014.04/
(архив tar.gz)

Распаковать в /home/user/kernel_build

cd исходники
./build_fly446.sh 

Структура исходников

/mediatek
custom/common/kernel - общие исходники (драйвера...)
custom/$project/kernel - для вашего устройства (cust'ы)
config/$project    ProjectConfig.mk

$project = fly89_iq446_wet_kk

custom/$project/kernel/dct/dct/codegen.dws
GPIO пины, клавиши

Адаптация

mtk 6589

Отладка

Ядро

adb shell
su
dmesg

cat /proc/kmsg

Android
adb logcat > logcat.log
Запускаем только после того, как обнаружилось устройство.

Дисплей

Добавляем LCM драйвер для вашего дисплея

common/kernel/lcm

Прописываем в
 
common/kernel/lcm/mt65xx_lcm_list.c 

В новых устройствах используется lk, и если название драйвера отличается от родного, загрузка не пойдет.

Клавиши

Смотрим лог dmesg при нажатии кнопки громкости "-" у нас так:
[0:swapper/0]kpd: (pressed) HW keycode = 10
[0:swapper/0]kpd: Linux keycode = 0

Нужно прописать правильное соответствие кодов.
Запускаем в wine DrvGen.exe, выбираем codegen.dws, на вкладке keypad settngs вводим в нужную ячейку.

Посмотреть, что получилось можно так: запускаем генерацию и смотрим в файле project_name/kernel/dct/cust_kpd.h

 /* HW keycode [0 ~ 71] -> Linux keycode */
 #define KPD_INIT_KEYMAP()      \
 {      \
       [1] = KEY_VOLUMEUP,             \
       [10] = KEY_VOLUMEDOWN,          \
 } 

KEY_VOLUMEUP прописано в ядре Linux

Дополнительный вариант:
<4>[ 297.333097] (0)[38:pmic_6325_threa]kpd: PMIC reset Key generate, pressed=0
<4>[ 297.333160] (0)[38:pmic_6325_threa]kpd: (released) HW keycode =115 using PMIC

Надо было прописать напротив Home key (в коде идет как KPD_PMIC_RSTKEY_MAP)

Тачскрин

GT9XX

В исходниках tpd_custom_gt9xx надо вписать конфиг, можно взять в /proc/gt9xx_config

Подсветка

проект/kernel/leds/mt65xx/cust_leds.c

В новых используется стандартный PWM, в более старых отдельный контроллер (Для него нужна cust ф-ция через GPIO)

Зарядка
 
bq24158 на mt6752 добавляем драйвер в power.

Датчики

Проверяем, чтобы i2c адрес соответствовал (одинаковый в пределах платформы)

Акселерометр
прописываем direction (отвечает за пересчет координат x, y, z)

Освещенности, приближения (alsps)
Шкала освещенности
Границы для датчика приближения

Камера

У меня получилось заставить работать основную камеры ov8830_raw + fm50af

Вот небольшая инструкция:

1) Добавляем поддержку в ядро
а) Вписываем в ProjectConfig.mk свои камеры

б) Включение камеры прописано в custom/your_project/camera/kd_camera_hw.c
Если вашей модели нет, берем из других исходников, желательно этой же платформы.

Подача питания, биты, GPIO.

Обычно достаточно стандартной инициализации для этой модели.

Если в логе видим id камеры, значит камеру завелась. (camera open id = 0x8830 (Для ov8830))

Затем прописываем автофокус (lens)

2) Сборка libcameracustom

Берем исходники из шапки - eastaeon89

Я просто добавил свои камеры в ProjectConfig.mk (оставить только свои, иначе может не работать)

Собираем

./mk проект dr libcameracustom

Проверяем, чтобы функции с вашей камерой были в libcameracustom.so (можно через nano)

3*

Если не получилось, поиском можно найти, где встречается дефолтная и сделать также для вашей (лучше по имени SENSOR_DRVNAME_OV8830_RAW)

Там мест 7 будет, но в большинстве уже есть поддержка:

kernel/imgsensor

hal/imgsensor

Для фронтальной ov9726_mipi_raw в eastaeon89 пришлось вписывать в sensorlist, в hal нашел только с mt6571 (в остальных не хватало файлов)

Либа собралась.

В kd_camera_hw.c взял от ov5647.



Фонарик, вспышка

constant_flashlight/led_strobe.c

GPIO_FLASH_LED_EN

Обычно достаточно прописать GPIO пин в codegen. Но бывают и по i2c, umpu.


flashlight hal

torchDuty - фонарик
afDuty      - автофокус
pfDuty      - вспышка
mfDuty     - manual

пятница, 13 февраля 2015 г.

Prestigio pmp5785 (Rockchip rk3188)

Prestigio PMP5785C_Quad Specs:
  • PCB: yftech mp81 board
  • RTC HYM8563
  • REGULATOR ACT8846
  • RAM 1 GB LDDR3
  • NAND EMMC
  • HDMI RK616
  • SND_SOC RK616
  • Wifi/BT RTL8723AU
  • Display Interface Controller ssd2828 MIPI Master Bridge Chip
  • Display IPS 1024x768 7.85'' 
  • Touchcontroller Goodix gt9xx (IC VERSION:9110_1050)
  • Accelerometer bma250/222
  • Camera sp2518 back, sp0718 front
  • Battery cw2015 (4700 mAh)
Radxa Rock Pro
  • RTC HYM8563 
  • REGULATOR ACT8846 
  • RAM 2 GB LDDR3 
  • HDMI RK616 
  • SND_SOC RK1000 
  • Wifi/BT RTL8723AU
CPU
RK3188 x4 1608 Mhz

GPU
Mali 400MP4 600 Mhz
Driver r4p0

RAM
LDDR3 384 Mhz

Overclock

CONFIG_DDR_SDRAM_FREQ=384

Позволяет ограничивать частоту. Можно задать до 528.
Я пробовал 395.
В логе dmesg выводится значение (частота, напряжение)
update ddr table 395001 1100000