Нашел прямую ссылку на волну чиллаута на 1.FM: http://sc-tcl.1.fm:8010/
вторник, 10 декабря 2013 г.
среда, 30 октября 2013 г.
RK3066 TV box. Ядро и модули.
Поскольку ядро целиком не заработало, решил необходимые мне куски (HDMI Sound) собрать модулями. Повозиться пришлось - сначала системе не нравился version magic, а ключика -f в андроидном insmod нетути. Это победилось довольно легко, но далее модуль выдал ошибку:
ismod:Что в свою очередь вылечилось дописыванием флагов компиляции:unknown relocation: 27
CFLAGS_MODULE=-fno-picПосле этих манипуляций модули встраиваются нормально:
shell@android:/ # lsmod ... snd_soc_rockchip_hdmi 1483 0 - Live 0x00000000 snd_soc_hdmi 1798 0 - Live 0x00000000 ...Правда, дополнительные аудиоустройства в SounDeviceManager так и не увиделись.
среда, 23 октября 2013 г.
RK3066 TV box. boot.img
Проверив в самом начале разборку-сборку boot.img, я как-то упустил из виду то, каким конкретно mkbootimg я это делал. И очень зря - для rk30xx он очень свой - умеет поддерживать pagesize в 16К и по дефолту использует именно этот размер. Любые другие варианты приводили к тому, что после прошивки образа при загрузке ядра и рамдиска вылазило сообщение "Load Failed" и коробка попадала в рекавери-мод.
Тут лежит правильный, для linux x86_64
Теперь самосборное ядро начало грузиться. Правда пока получаю облом и bootloop в самом начале:
Тут лежит правильный, для linux x86_64
Теперь самосборное ядро начало грузиться. Правда пока получаю облом и bootloop в самом начале:
[ 0.613863] Unable to handle kernel NULL pointer dereference at virtual address 00000019 [ 0.621946] pgd = c0404000 [ 0.624649] [00000019] *pgd=00000000 [ 0.628233] Internal error: Oops: 5 [#1] PREEMPT SMP [ 0.633195] CPU: 0 Not tainted (3.0.8+ #1) [ 0.637645] PC is at regulator_set_voltage+0x8/0xf8 [ 0.642523] LR is at tps65910_post_init+0x418/0x4f8 [ 0.647399] pc : [Это на ядре от Debian, а следующее - на ядре от mk808:] lr : [ ] psr: 60000013
[ 1.390746] Unable to handle kernel paging request at virtual address f700f000 [ 1.656040] pgd = c0404000 [ 1.658745] [f700f000] *pgd=8fc2c811, *pte=00000000, *ppte=00000000 [ 1.665054] Internal error: Oops: 807 [#1] PREEMPT SMP [ 1.670191] CPU: 0 Not tainted (3.0.36+ #3) [ 1.674731] PC is at cfb_imageblit+0x128/0x4e8 [ 1.679172] LR is at fb_show_logo+0x304/0x880 [ 1.683525] pc : [] lr : [ ] psr: 60000013
понедельник, 21 октября 2013 г.
Windows 8.1 отсутствует в Store
По этой проблеме нашел на просторах инета решение:
Для тех у кого не появился пункт установки обновления 8.1. Попробуйте выполнить следующие пункты:
1. Закройте полностью Магазин (Завершите в процессах).
2. Откройте диалог Выполнить (Win+R)
3. В поле введите WSReset.exe и выполните (ОК).
4. Выполните перезагрузку.
5. Попробуйте снова отктрыть Магазин и найти обновление.
Все сработало, п.4 - важен.
Для тех у кого не появился пункт установки обновления 8.1. Попробуйте выполнить следующие пункты:
1. Закройте полностью Магазин (Завершите в процессах).
2. Откройте диалог Выполнить (Win+R)
3. В поле введите WSReset.exe и выполните (ОК).
4. Выполните перезагрузку.
5. Попробуйте снова отктрыть Магазин и найти обновление.
Все сработало, п.4 - важен.
вторник, 15 октября 2013 г.
RK3066 TV box. Тонкости прошивки update.img
Во время работ по "подпиливанию" прошивок для устройства столкнулся с небольшой проблемой: после каких-то определеннйх изменений очередной подготовленный update.img воспринимался девайсом "в штыки", со словами
Вцелом, было стойкое подозрение, что данная проблема как-то связана с несоответствием пропертей загруженного андроида и прошивки. В прошивку вкладывается файл parameter, в котором, среди прочего есть параметры
Был предпринят "grep -i model system/build.prop" и "grep -i manufacturer system/build.prop", первый выдал результат. Для пущести, гуглу был дан новый запрос, с указанием MACHINE_MODEL, который подтвердил мои подозрения:
rockchip's recovery program compares model name in update.img(machine_model in HWDEF) and running system(ro.product.model). if they are different, you'll get error.
отсюда.
Проверил - всё именно так: если параметр "ro.product.model" совпадает с MACHINE_MODEL из parameter, указанных при сборке имиджа - прошивка не считается инвалидной.
Invalid firmware image! Found a invalid firmware image file '/sdcard/update.img'. Would you like to delete it? Yes/No
В тоже время тот же образ легко прошивался в recovery-mode, т.е. образ был вполне пригоден. Начал вспоминать, что менял. А менял довольно многое. Подумалось, что здесь играют роль какие-то свойства самой прошивки, а не того, что у нее внутри. Поискал в интернете. Русскоязычный - порадовал богатством ответов типа "а вас предупреждали, что шится на кастом можно только через USB" или что-то типа того, вплоть до перехода на личности (а что делать мне, если нету у меня в девайсе USB OTG!?), но ни одного толкового, в котором бы упоминалось почему это происходит. Впрочем, это не удивительно - основная масса отечественных "клепателей прошивок" не любят читать мануалы, а те немногие, которые их читают - не спешат раскрывать свои знания. Что вполне логично.
Вцелом, было стойкое подозрение, что данная проблема как-то связана с несоответствием пропертей загруженного андроида и прошивки. В прошивку вкладывается файл parameter, в котором, среди прочего есть параметры
MACHINE_MODEL MANUFACTURER
Был предпринят "grep -i model system/build.prop" и "grep -i manufacturer system/build.prop", первый выдал результат. Для пущести, гуглу был дан новый запрос, с указанием MACHINE_MODEL, который подтвердил мои подозрения:
rockchip's recovery program compares model name in update.img(machine_model in HWDEF) and running system(ro.product.model). if they are different, you'll get error.
отсюда.
Проверил - всё именно так: если параметр "ro.product.model" совпадает с MACHINE_MODEL из parameter, указанных при сборке имиджа - прошивка не считается инвалидной.
понедельник, 30 сентября 2013 г.
RK3066 TV box. Работы продолжаются.
С утра сделал boot-анимацию (как это делается описано во многих источниках, поэтому не стану распространяться), пересобрал system.img, потом всю прошивку. Залил полученное в коробочку и получил неприятность - коробка загрузилась, показала анимацию и так на ней и застряла. Пришлось изучать вопрос - каким образом её перешить. Замечу, что коробка без USB-OTG, т.е. к компьютеру её не подключить. Кнопок на ней тоже нет. Разобрал, рассмотрел. Нашел отверстия для запайки кнопочки "RES". Поскольку при замыкании оных перезагрузки не произошло, предположил, что это у нас "Restore". Отключил питание, замкнул контакты, включил питание, подождал секунд пять - разомкнул контакты. Счастье есть - попал в restore mode. Там среди прочего есть "erase/wipe" и "rkflash ...". Еще раз всё перепроверил, подправил boot-анимацию (частоту кадров в первом случае поставил низковатую), собрал новый образ, залил на SD-карточку, прошил - коробка ожила. По некоторым непроверенным данным коробка могла "ожить" уже после "erase/wipe".
Где-то недавно видел сентенцию - "опыт - это то, что получаешь, когда не получаешь то, что хочешь". Склонен согласиться. Могу добавить только, что после получения опыта сильно возрастает вероятность получить то, что хочешь. Теперь можно не особо опасаясь пробовать кастомайзить ядро и сам android.
Ну и немного о том, как работать с system.img. Как я говорил в прошлом посте, system.img - в данном случае - это файл, содержащий в себе файловую систему ext3. Сначала монтируем систему и вытаскиваем из нее содержимое:
Выпольнять скрипт надо из под sudo. Результатом будет новый файл system.img, который надо поместить в Images, для последующей сборки прошивки.
Где-то недавно видел сентенцию - "опыт - это то, что получаешь, когда не получаешь то, что хочешь". Склонен согласиться. Могу добавить только, что после получения опыта сильно возрастает вероятность получить то, что хочешь. Теперь можно не особо опасаясь пробовать кастомайзить ядро и сам android.
Ну и немного о том, как работать с system.img. Как я говорил в прошлом посте, system.img - в данном случае - это файл, содержащий в себе файловую систему ext3. Сначала монтируем систему и вытаскиваем из нее содержимое:
mkdir system sudo mount -o loop system.img system mkdir -p out/system cp -R --preserve=all system/* out/system/ sudo umount system mv system.img system-orig.imgДалее производим нужные пассы, после чего запаковываем out/system. Скриптик запаковки выдрал из тулзов сборки ядра для rk30xx:
#!/bin/bash SYS=$1 OUT="system.img" if [ -d "$SYS" ] then # Main calculation delta=5120 num_blocks=`du -sk $SYS | tail -n1 | awk '{print $1;}'` num_blocks=$(($num_blocks + $delta)) num_inodes=`find $SYS | wc -l` num_inodes=$(($num_inodes + 500)) ok=0 echo "Blocks=$num_blocks, inodes=$num_inodes" while [ "$ok" = "0" ] do genext2fs -a -d $SYS -b $num_blocks \ -N $num_inodes -m 0 $OUT \ 2>&1 >/dev/null \ && \ tune2fs -j -L system -c -1 -i 0 \ $OUT 2>&1>/dev/null \ && \ ok=1 || num_blocks=$(($num_blocks + $delta)) done echo "Recalculate blocks=$num_blocks" e2fsck -fy $OUT 2>&1>/dev/null || true delta=1024 num_blocks=`resize2fs -P $OUT 2>&1 \ | tail -n1 | awk '{print $7;}'` rm -f $OUT echo "Dirty run end, now building image..." ok=0 while [ "$ok" = "0" ] do genext2fs -a -d $SYS -b $num_blocks \ -N $num_inodes -m 0 \ $OUT 2>&1>/dev/null \ && \ tune2fs -j -L system -c -1 -i 0 \ -O "dir_index,filetype,sparse_super" \ $OUT 2>&1>/dev/null \ && \ ok=1 || num_blocks=$(($num_blocks + $delta)) done e2fsck -fyD $OUT 2>&1>/dev/null || true echo "Done." else echo "System directory $SYS not found" exit 0 fi
Выпольнять скрипт надо из под sudo. Результатом будет новый файл system.img, который надо поместить в Images, для последующей сборки прошивки.
воскресенье, 29 сентября 2013 г.
RK3066 TV Box update.img: Туда и обратно.
Разбираюсь с прошивками TV-Box на базе RockChip RK3066. Так, чисто для себя...
Итак. Распаковать имадж:
Упаковка до *.img делается с помощью img_maker, md5-суммы сходиться не будут, т.к. внутрь файла .img запихивается время, когда он был произведен. Проверил тем, что опять распаковал и проверил md5-сумму. Все точно.
Итак, после распаковки apftool получаем каталог root, в котором лежит структура прошивки андроида. В каталог Image легли образы всех кусков прошивки - boot, kernel, misc, recovery, system. В моем случае system.img - это готовая к работе ext3:
Соответственно, ее можно просто замонтировать по соседству:
Файл Image/boot.img содержит в себе и ядро и ramdisk
опять же, boot.img & boot-1.img показывают одинаковые md5-суммы.
Пока я не смог понять, какой формат у файла boot/boot.img-kernel - я полагал, что это загзипленное ядро, но file говорит, что не понял, что это за формат.
Тулзы взяты из rk-tools, mkbootimg из rk30sdk.
Итак. Распаковать имадж:
$ img_unpack update.img update-unpacked
rom version: 4.1.1
build time: 2013-08-20 14:15:41
chip: 60
checking md5sum....OK
Полученный образок распаковывается с помощью afptool:
$ afptool -unpack update-unpacked root Check file...OK ------- UNPACK ------- package-file 0x00000800 0x00000238 RK30xxLoader(L)_V1.22.bin 0x00001000 0x0002EC7A parameter 0x00030000 0x00000267 Image/misc.img 0x00030800 0x0000C000 Image/kernel.img 0x0003C800 0x00711030 Image/boot.img 0x0074E000 0x00A50000 Image/recovery.img 0x0119E000 0x00A9C000 Image/system.img 0x01C3A000 0x15D60800 parameter 0x1799A800 0x0000025B SELF 0x00000000 0x1799C004 Skip SELF file. update-script 0x1799B000 0x000003A5 recover-script 0x1799B800 0x0000010A UnPack OK! $Забегая вперед скажу, что сразу же проверил обратную процедуру - упаковку с полученного дерева. Файлы в результате идентичные, об этом сказал ls -l и md5sum.
Упаковка до *.img делается с помощью img_maker, md5-суммы сходиться не будут, т.к. внутрь файла .img запихивается время, когда он был произведен. Проверил тем, что опять распаковал и проверил md5-сумму. Все точно.
Итак, после распаковки apftool получаем каталог root, в котором лежит структура прошивки андроида. В каталог Image легли образы всех кусков прошивки - boot, kernel, misc, recovery, system. В моем случае system.img - это готовая к работе ext3:
$ file Image/system.img
Image/system.img: Linux rev 1.0 ext3 filesystem data...
Соответственно, ее можно просто замонтировать по соседству:
$ mkdir system
$ sudo mount -o loop Image/system.img system
О пассах с system.img - как нибудь позже.Файл Image/boot.img содержит в себе и ядро и ramdisk
$ boot_info Image/boot.img
Page size: 16384 (0x00004000)
Kernel size: 7409700 (0x00711024)
Ramdisk size: 3374548 (0x00337dd4)
Second size: 0 (0x00000000)
Board name:
Command line: ''
Base address: 1611169536 (0x60087f00)
Распаковывается это дело с помощью скрипта split_boot:$ split_boot Image/boot.img
Page size: 16384 (0x00004000)
Kernel size: 7409700 (0x00711024)
Ramdisk size: 3374548 (0x00337dd4)
Second size: 0 (0x00000000)
Board name:
Command line: ''
Base address: (0x60087f00)
в результате в текущем каталоге появляется каталог boot, который содержит boot.img-kernel, boot.img-ramdisk.cpio.gz и распакованный в соответствующий каталог ramdisk.Файлы Image/kernel.img - это упакованное ядро, а boot/boot.img-kernel - распакованное. репаковку можно делать с помощью mkkrnlimg. С ключиком -a - в img, с ключиком -r - распаковать. Опять же проверено по md5sum. Собрать boot.img назад можно с помощью mkbootimg, указав программе файлы с незапакованным ядром и рамдиском:
$ mkbootimg --kernel boot/boot.img-kernel \
--ramdisk boot/boot.img-ramdisk.cpio.gz \
-o Image/boot-1.img
опять же, boot.img & boot-1.img показывают одинаковые md5-суммы.
Пока я не смог понять, какой формат у файла boot/boot.img-kernel - я полагал, что это загзипленное ядро, но file говорит, что не понял, что это за формат.
Тулзы взяты из rk-tools, mkbootimg из rk30sdk.
MiniDLNA patch
Давеча подпатчил MiniDLNA сервер: поменял старого пингвина на нового, со значком DLNA на брюхе, а так же добавил раздаваемые расширения для аудиофайлов .dts & .mka. Тут вот. Патчить надо версию, которая раздается с сорсфоржа - там демон зовется minidlnad в отличии от версии в git'е.
понедельник, 24 июня 2013 г.
Желтая стрела
...в сущности, никакого счастья нет, есть только сознание счастья. Или,
другими словами, есть только сознание. Нет никакой Индии, никакого поезда,
никакого окна. Есть только сознание, а все остальное, в том числе и мы сами,
существует только постольку, поскольку попадает в его сферу. Так почему же,
думаю я снова и снова, почему же нам не пойти прямо к бесконечному и
невыразимому счастью, бросив все остальное? Правда, придется бросить и себя. Но
кто бросит? Кто тогда будет счастлив? И кто несчастлив сейчас?
среда, 17 апреля 2013 г.
понедельник, 8 апреля 2013 г.
Нечуткая девушка
Я к вам с любовью, Вероника,
В кино вас звал, дарил цветы,
Стихи рожал до красноты,
А вы зачем-то с мужем. Дико...
В кино вас звал, дарил цветы,
Стихи рожал до красноты,
А вы зачем-то с мужем. Дико...
воскресенье, 7 апреля 2013 г.
Путник в ночи
Выходит он. На нём сюртук кургузый.
Хрипят часы: кончается завод,
Нещадно туфли жмут, теснят рейтузы...
Какая-то звезда его зовёт.
Хрипят часы: кончается завод,
Нещадно туфли жмут, теснят рейтузы...
Какая-то звезда его зовёт.
четверг, 4 апреля 2013 г.
Чьи-то стансы
Под влияньем семейной отравы
Я квадратный рисую овал...
Тот, кто в шкуре моей не бывал,
Не поймёт и не скажет: «Вы правы».
Тот, кто в шкуре моей побывал,
Согласится и скажет: «Вы правы,
Ведь квадрат – это тот же овал,
Но вкусивший семейной отравы».
Каждый день повторяя: «Вы правы...»
И в квадрат превращая овал,
Я сбежал от семейной отравы,
Полетал, попытал, побывал...
Но с годами мой пыл убывал...
И теперь сладкий запах отравы
Я вдыхаю покорно, Вы правы,
И квадрачу свой вечный овал.
воскресенье, 17 марта 2013 г.
Подписаться на:
Сообщения (Atom)