суббота, 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

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

Узнать инфу об устройстве
а) Чтобы узнать для какого оборудования собрано ядро в 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


четверг, 5 февраля 2015 г.

Rockchip rk3188 linux

Для запуск мультибута из из темы на 4pda на Prestigio PMP5785

от 11.02.2015
Ядро
Recovery (Мультибут)
Ядро уже встроено в мультибут.

Используем образ Picuntu 14.04 loop с 4pda (от Lipton_lan)


Запуск wi-fi

Монтируем системный раздел:
sudo -s
mount /dev/mtdblock9 /mnt

Копируем  модули:
mkdir -p /lib/modules/3.0.36+
cp /mnt/lib/modules/* /lib/modules/3.0.36+/

Копируем  конфиги:
mkdir /system
cp -a /mnt/etc /system/

Для проверки:
insmod /lib/modules/3.0.36+/8723au.ko

на постоянку прописываем в /etc/rc.local

Touchscreen

Драйвер mtev уже установлен.

Установка mtev

Звук (Аудио кодек rk616)

Приводим настройки alsa /etc/asound.conf
к такому содержанию:
pcm.!default {
       type hw
       card 0
       device 0
  }
 ctl.!default {
       type hw
       card 0
   }
В консоли запускаем alsamixer, выбираем Playback Path = SPK_HP (Speaker + Headset)

Проверка звука:
speaker-test -t wav -c 2

Воспроизводение видео
mplayer, smplayer (gui qt4) работают
(VLC черный экран, Parole gstreamer error )


Xubuntu 14.04 

apt-get install xubuntu-desktop

Добавляем панель индикаторов. Появятся иконки звука, wi-fi, батареи.

Регулировка подсветки

Устанавливаем плагины:
apt-get install xfce4-power-manager-plugins
Добавляем индикатор на панель.

Вручную:
value: 0 - 255
echo 64 > /sys/class/backlight/rk28_bl/brightness

Батарея

Показывает только % заряда

 /sys/class/power_supply
cw2015_bat ac usb

Фиксы

Если некорректно отображаются Qt приложения, перед запуском
export QT_GRAPHICSSYSTEM=opengl

Баги

- В альбомном режиме Rotate CW
Лагает перемещение окон
Ошибки в логе:
Xlib:  extension "RANDR" missing on display ":0.0".  и не работают настройки дисплея
! (Это баг x11, он использует промежуточный буфер, варианты: собрать ядро не 768x1024, а 1024x768 или задействовать ускорение mali)

- При открытии карты памяти выдает ошибку, что уже примонтирована.
(Можно открыть скопировав имя точки монтирования)
Device /dev/mmcblk0p1 is already mounted at `/media/picuntu/72AD-2013'.

- Не работает bluetooth
(подгрузить rtk_btusb.ko, пишет get firmware error)

Исходники ядра: github.com/andr7e

Changelog правки ядра:

0.1 Запуск мультибута
Собрать ядро с поддержкой  виртуальной консоли (/dev/tty0 ... N)
CONFIG_VT=y

0.2 Включаем CONFIG_SYSVIPC=y
Если программы выдают предупреждение:
(vlc:2893): Gdk-WARNING **: shmget failed: error 38 (Функция не реализована)

0.3 20150211
Фикс тачскрина: в функции touch_up убрать x и y. 

0.4 20150215
Фикс rk616 Audio
Звук появлялся только при изменение Playback Path

----------------------------------------------------------------------------------------------------
Не актуально:
Если тормозит перемещение окон (ядро было собрано с отладкой), пока можно обойти так:
В диспетчере окон -> Дополнительные -> Скрывать содержимое окна (при перемещении)

Если не запускается onboard,
посмотреть в сеансы и запуск -> Автозапуск приложений AT-SPI D-Bus Bus

Если в трее нет иконки nm-applet (Network manager applet), в автозапуске  /etc/xdg/autostart/nm-applet.desktop в поле 'Exec' заменить nm-applet на dbus-launch nm-applet

Баги
- Иногда не запускается onboard (только в xubuntu),
** (onboard:2246): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-dtbFOKgGm7: В соединении отказано
** (onboard:2493): ERROR **: AT-SPI: COuldn't connect to accessibility bus. Is at-spi-bus-launcher running?
Ловушка трассировки/останова

(На archlinux советуют установить lightdm-greater-gtk2, на ubuntu такого нет?)