Program received signal SIGSEGV, Segmentation fault.
0x40f41780 in QContentFilter (this=0xbe83b2d4, type=3196302032, argument=...) at /mnt/moto/qtopia-ezx/src/libraries/qtopia/qcontentfilter.cpp:212
212 /mnt/moto/qtopia-ezx/src/libraries/qtopia/qcontentfilter.cpp: No such file or directory.
in /mnt/moto/qtopia-ezx/src/libraries/qtopia/qcontentfilter.cpp
Current language: auto
The current source language is "auto; currently c++".
(gdb) bt
#0 0x40f41780 in QContentFilter (this=0xbe83b2d4, type=3196302032, argument=...) at /mnt/moto/qtopia-ezx/src/libraries/qtopia/qcontentfilter.cpp:212
#1 0x40f30348 in QContentSet (this=0x3125c0, tag=QContentFilter::Category, filter=..., parent=)
at /mnt/moto/qtopia-ezx/src/libraries/qtopia/qcontentset.cpp:244
#2 0x40e5cd38 in findSystemRingTone (name=...) at /mnt/moto/qtopia-ezx/src/libraries/qtopia/qphoneprofile.cpp:345
#3 0x40e5cdf8 in QPhoneProfile::systemMessageTone (this=) at /mnt/moto/qtopia-ezx/src/libraries/qtopia/qphoneprofile.cpp:571
#4 0x40e618ac in QPhoneProfile::read (this=0x31, c=...) at /mnt/moto/qtopia-ezx/src/libraries/qtopia/qphoneprofile.cpp:840
#5 0x40e632b4 in QPhoneProfileManager::loadConfig (this=0x80000000) at /mnt/moto/qtopia-ezx/src/libraries/qtopia/qphoneprofile.cpp:1260
#6 0x40e63514 in QPhoneProfileManager::sync (this=0x2df7a8) at /mnt/moto/qtopia-ezx/src/libraries/qtopia/qphoneprofile.cpp:1552
#7 0x40e63b94 in QPhoneProfileManager (this=0x2df7a8, parent=) at /mnt/moto/qtopia-ezx/src/libraries/qtopia/qphoneprofile.cpp:1217
вторник, 17 ноября 2009 г.
Цепепе
понедельник, 16 ноября 2009 г.
Qtopia has been built.
среда, 11 ноября 2009 г.
Kobo-deluxe
Портировал таки старую добрую кобу :) лежит как обычно во временном фиде, ресурсы распаковать как обычно в ~/packages/sdl/$game
зы. со звуком в кутопие\сдл так и жопа. если в настройках убрать звуки роизводительность повышается на порядок
Арч, gcc, кутопия
Ну это кроме того, что накрылся bh вместе с винтом (и краном у меня в ванной, АГГРХ).
UPD. Продолжение балета: поставил таки дебиан в чрут. хостовая часть собралась - теперь кросскомпилятор gcc-4.3.чототам неосиливает собрать кутю.
воскресенье, 8 ноября 2009 г.
Тем временем, в открытом космосе
суббота, 7 ноября 2009 г.
суббота, 31 октября 2009 г.
четверг, 29 октября 2009 г.
среда, 28 октября 2009 г.
Магия? Нет никакой магии
воскресенье, 25 октября 2009 г.
Магическая магия
вторник, 20 октября 2009 г.
Удвоенная прочность кода
- Есть, поставить битовые сетки в два ряда!
ssp_pcap_register_val = CDC_CLK_IN_13M0;
power_ic_set_reg_value( PCAP_AUD_CODEC, PCAP_AUD_CODEC_INDEX, PCAP_BIT_CLEAN_VALUE, PCAP_AUD_CODEC_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, CDC_CLK_INDEX, CDC_CLK_IN_13M0, CDC_CLK_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, SMB_INDEX, PCAP_BIT_CLEAN_VALUE, SMB_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, FS_8K_16K_INDEX, PCAP_BIT_CLEAN_VALUE, FS_8K_16K_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, DIG_AUD_IN_INDEX, PCAP_BIT_CLEAN_VALUE, DIG_AUD_IN_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, AUDIHPF_INDEX, PCAP_BIT_SET_VALUE, AUDIHPF_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, AUDOHPF_INDEX, PCAP_BIT_SET_VALUE, AUDOHPF_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, CLK_INV_INDEX, PCAP_BIT_CLEAN_VALUE, CLK_INV_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, FS_INV_INDEX, PCAP_BIT_CLEAN_VALUE, FS_INV_NUM_BITS );
/*(3) reset digital filter(DF_RESET=1) */
power_ic_set_reg_value( PCAP_AUD_CODEC, DF_RESET_INDEX, PCAP_BIT_SET_VALUE, DF_RESET_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, ADITH_INDEX, PCAP_BIT_CLEAN_VALUE, ADITH_NUM_BITS );
/* (4) enable pcap clk(CDC_CLK_EN=1),enable CODEC(CDC_EN=1) */
power_ic_set_reg_value( PCAP_RX_AUD_AMPS, CD_BYP_INDEX, PCAP_BIT_CLEAN_VALUE, CD_BYP_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, CDC_CLK_EN_INDEX, PCAP_BIT_SET_VALUE, CDC_CLK_EN_NUM_BITS );
power_ic_set_reg_value( PCAP_AUD_CODEC, CDC_EN_INDEX, PCAP_BIT_SET_VALUE, CDC_EN_NUM_BITS );
mdelay(1); /* specified enable time */
Для нормальных людей перевожу: сначала сбрасываем весь регистр в нуль, а потом отдельные биты по-очереди. Коварный враг не пройдет.
понедельник, 19 октября 2009 г.
Порт библиотеки SDL
собрал тестовую игрушку tower toppler, лежит во временном фиде http://ezxdev.org/qtopia/feed/tmp/
из-за наркотичного установщика пакетов ресурсы игр в qpk не засунуть. поэтому ресурсы хранятся в ~/packages/sdl/$game_name
для топплера ресурсы брать тут
собранные тестовые библиотеки сдл брать тут
воскресенье, 18 октября 2009 г.
понедельник, 12 октября 2009 г.
Хауту по прошивке и восстановлению BP
Восстановительная прошивка: тыц
Ахтнук: без бекапа ничего не шить.
воскресенье, 11 октября 2009 г.
openezx
воскресенье, 4 октября 2009 г.
Deep-sleep не помог
Вот он, powermanagement epic fail. Если скорость разряда еще можно объяснить тем, что моя банка деградировала, то разница во время слипа может означать только то, что кто-то лишний раз жрет электричество.
четверг, 1 октября 2009 г.
Безумный ихперименты
ps. А еще на меня дурно повлияло знакомство с BP - чтобы поправить строчку бинарнике qpe я не стал его пересобирать, а нагло полез хекседитом.
Ценные кадры, овладевшие техникой
Такое впечатление, что в режиме "sleep", оно потреблает столько же, сколько и в обычном. На минге можно заюзать "deep-sleep" - там должно быть нормально. Надо будет попробовать.
Желающие померяться длиной аккумулятора, могут невозбранно использовать http://pastebin.com/f714d10fa. Скармливать нужно файл такого вида:
1252741198 717 2
1252741379 723 2
Первая колонка - таймстамп (хинт: $(date +%s) ), вторая колонка - показания датчика BATT (на ядре 2.4 читается через hwtool -b), третья колонка не учитывается - можно просто нуль
воскресенье, 27 сентября 2009 г.
Сходил в Рассадник
>Почему в отдельно взятой теме продолжается политика огораживания от ссылок на другие ресурсы (интересует ссылка на блог разработчика и ссылка на конференцию) по Qtopia?
Ссылки на другие ресурсы были запрещены согласно наших правил
и недружественной политики по отношению к нашему форуму.
Заглянул в правила:
Запрещены реферальные ссылки в сообщениях форума или подписи
пользователя на сайты (форумы) по моторолам для скачивания
контента или получения другой информации (FAQ, мануал и т.д.)
Указать ссылку на первоисточник может только модератор форума !
Ужас! Ужас! Ужас! Мы теряем деньги и пользователей! Все мотофаги уйдут к бложек и мы пойдем помиру! Ужас! Ужас! Ужас! Мы теряем деньги и пользователей! Все мотофаги уйдут к бложек и мы пойдем помиру!
Ну это кроме того, что оные правила фееричны каждой строчкой в отдельности.
суббота, 26 сентября 2009 г.
Радио минг
пакет с радио на минг (нуи е2 вроде как) тут переложите в фид.
после установки
mknod /dev/fmradio c 14 7
иначе работать не будет.
Сказка про линейный процессор
И так, жыла-была бабка, делала деревянные телефоны, типа E398, над которыми некоторые товарищи полюбили измываться, рисуя на них маркером слово "ЗУБ", заставля эти телефоны делать разную прикольную ерунду. В телефонах был процессор Neptune LTE. Потом бабка навострилась делать тонкие телефоны, уже не из дерева, а из фанеры - всякие L7, например, и делать их на процессоре Neptune LTE2.
Еще бабка решила поделать смартфоны из кирпича, но схитрила, ибо ленивая была. Взяла кусок деревянного телефона и засунула внутрь кирпичного КПК - так появились A780. А потом сделала то же самое с фанерным - так пявились минги и едва.
Телефоны продавала не сама бабка, а старый барыга-еврей, который продавал не всякие телефоны, а со справкой и печятью. А печять была у другого барыги, который был жадный жлоп, трус и кое-какер - потому боялся, что кто-то поломает телефонные провода и будет звонить так, чтобы не платить ему деньге.
Поэтому барыга печять ставил только на такие телефоны, на которых нельзя было написать волшебное слово "ЗУБ", для чего все телефоны нужно было продавать в гондонах. А если снять его с телефона, или сделать дырку - телефон должен ломаться и не звонить. Гондоны для телефонов делал старый слепой дед и делал их фигово.
Товарищи, любившие прикольную фигню, знамо дело, нашли в гондоне дырку, сували туда маркер и стали писать слово "ЗУБ", не снимая ево с телефона, за что бабка получала от барыги по жопе.
Чтобы телефон звонил и показывал картинки, ему нужна прошивка, а чтобы хранить прошивку в телефоне, нужна флешка, которую можно читать, начинается она с адреса 0x10000000. А чтобы прошивка могла работать, ему нужна память (RAM), которыю можно быстро-бытро читать и писать, начинается она с адреса 0x14000000. Еще телефон нужно бутать и шить - для этого в телефоне есть два загрузчика - иромовый и нормальный.
Иромовый загрузчик живет внутри процессора, в памяти IROM, которую писать нельзя и которая начинается с 0x0 и юзается не обычную RAM, а свою собственную IRAM, которая начинается с 0x03F80000. Нормальный загрузчик живет в начале флеша и при работе пользуется RAM.
Как происходит обычная загрузка: при включении, управление передается по адресу 0x0 (иром).
Иром включает флешку и проверяет, есть ли на флешке бут и проверяет подпись бута, которая лежит вконце блока, в котором он прошит. Если поправить бут, то подпись не сойдется и иром уйдет в режим "бланк" - включит usb и будет ждать, пока ему по usb скажут, что делать. Суть тестпоинта: замыканием ноги, флешка выключается, иромовый бут не находит нормальный и уходит в бланк.
Если иром проверил бут, то он читает из его заголовка адрес точки входа и передает туда управление. Пример заголовка:
00000000
00000010 01 13 02 FF 07 00 09 84 10 00 46 FC 10 00 00 00
00000020 10 00 EF D7 10 00 4A 9C
00000030 10 35 08 00 00 00 00 00
Красным выделен адрес точки входа, синим - адрес подписи бута, зеленым - адрес прошивки. Лирическое отступление: код бутлоадера заканчивается по адресу 0x10005E10, подпись начинается с адреса 0x1000E800, между ними неиспользуема область, забитая 0xFF, в которую можно совершенно спокойно записать слово "ЗУБ".
Загрузчик с флеша запускается и начинает проверять подпись самой прошивки, для этого он читает заголовок прошивки с адреса, который написан в заголовке бута. Заголовок прошивки:
00080000
....
000800A0 FF FF FF FF FF FF FF FF FF FF FF FF
Красным выделен адрес точки входа, зеленым - адрес заголовка подписи прошивки. Заголовок подписи прошивки:
00330000
Красным выделен адрес начала самой подписи.
Процесс проверки просходит так: узнаем адрес прошивки, узнаем адрес блока подписи прошивки и адрес самой подписи, читаем подпись, сверяем хеш блоков, адреса которых указанны в подписи с тем, что записан в подписи. Если все хорошо - запоминаем, что этот диапазон - доверенная область.
Затем читаем адрес точки входа - если он внутри доверенной обрасти, то передаем управление туда.
Зарытых собак тут несколько.
никто не проверят, находится ли заголовок прошивки внутри доверенной области (запатчено в буте минга),
адреса блоков, которые закрывает подпись, находятся в самой подписи,
между подписываемым блоком и подписью, есть область, в которую можно безболезненно писать.
Кроме самой прошивки, в телефоне есть другие подписанные области: сам бут и CG7. И в буте и в CG7 есть области между подписью и блоком, который она закрывает.
Блок CG7 лежит по адресу 0x10350000 и начинается с подписи, которая заканчивается на 0x1035045C, но сами данные начинается с 0x10350800.
На взломанной прошивке процедура походит так:
Вместо адреса настоящей подписи, подсовывается адрес подписи другого блока (CG7 или самого бута) и вместо самой прошивки, проверяется этот блок и заносится в доверенную зону.
Вместо адреса точки входа, указывается адрес удачного куска данных в этом блоке: "E5 9F", что является тумбовой инструкцией, делающей джамп на 0x59F (59f - отрицательное число, значит джампаемся на 0x59f ^ 0x7ff = 0x260 назад) и управление передается в неподписанную область между подписью и началом блока.
В итоге загрузчик доволен собой и думает, что проверил прошивку (а проверил CG7), при чем успешно. Адрес точки входа ведет как раз в CG7, которую он проверил, а значит туда можно передвать управление. Саму прошивку никто не проверял, а значит можно там все менять.
Теперь про загрузчики и процесс обновления прошивки.
Оба загрузчика (иромовый и нормальный) имеют набор комманд, которые можно выполнять через usb. Основные три: ADDR, BIN и JUMP. ADDR указывает адрес, на который нужно положить данные, BIN шлет сами данные, JUMP передает на них управление. В качестве данных выступает так называемый "лоадер" - программа, которая умеет шить флеш. Ее подпись тоже проверяется и она позволяет стирать, шить и читать только узкий диапазон адресов (нельзя заменить бут и pds).
В иромовом буте есть тупая дыра (срыв стека), через которую можно запустить любой код, например лоадер "ramldr2", который позволяет читать и писать любые адреса. Но иромвый бут запускается только тогда, когда не видит бут на флеше (или AP криво уходит в слип).
Про PDS. pds - область в телефоне, которая не меняется при его прошивке и лежит по адресам 0x10010000 и 0x10020000 (да, два раза - одна рабочая, вторая - запасная). В начале pds записана версия, которая меняется от прошивки к прошивке (в E2 - 4015, в A1200 - 4017). PDS разбит на нумерованые файлы, некоторые из которых зашифрованы уникальным ключем телефона. К закриптованным файлам относятся разные блокировки, например привязка к сети определенного оператора. Из-за этих криптованных файлов нельзя заливать PDS от одного телефона в другой.
Именно из-за PDS у меня и произошла вся эта история: прошивка E2 поменяла его версию и стерла зашифрованные файлы. Пришлось отрывать расшифровывалке руки, чтобы она не выдергивалась.
Еще в телефоне есть зона, в которую пишутся паники. Лежит по адресу 0x10030000.
ps. Свой ремонтный набор я скоро приведу в нормальный вид и выложу.
пятница, 25 сентября 2009 г.
вторник, 22 сентября 2009 г.
Обход RSA в BP минга
CG1 (начало 0x10080000)
по оффсету 0x00 (0x10080000) точка входа в прошивку меняется на адрес
"удачных" данных в CG7 +1: 10350911
по оффсету 0x10 (0x10080010)- флаг B001FFFB
CG7 (0x10350000)
по оффсету 0x20910 (0x10350910) должно быть E5 9F C0 00 (джамп)
по оффсету 0x452 (0x10350452) помещается волшебный джамп:
48 01 68 00 47 00 10 04 00 00
CG18 (0x10330000)
по оффсету 0x0 (0x10330000) помещается адрес начала CG7: 0x10350000
это провоцирует бут проверять CG7 вместо CG1
Нужно понижать бут, так что делается только через TP. Как всегда, спасибо Vilko
ps. а теперь мерзкая прошивка ругается, что я понизил бут и все равно не грузится.
воскресенье, 20 сентября 2009 г.
Чтение-запись флеша BP
суббота, 19 сентября 2009 г.
четверг, 17 сентября 2009 г.
Опять про зарядку
Интересуют циферки: максимально разряженный и максимально разряженный (каждое состояние в трех вариантах: с отключенным ЗУ, с подключенным ЗУ, с подключенным USB).
У меня полный заряд - 760, когда отключаю зарядное - быстро убегает до 620,615,600. Не осиливаю, или это батарея деградировала или кто-то опять дурак...
Usb-host
среда, 16 сентября 2009 г.
воскресенье, 6 сентября 2009 г.
Страна должна знать своих героев
[01:21:18 PM] Provodnik: меня интересует не столько сама jffs2 сколько возможность защиты прошивки от распаковки..
[01:21:31 PM] tmp_do: Provodnik: паганый праприетарщег
[01:21:37 PM] w4tch3r: ))
[01:21:42 PM] * w4tch3r взял папкорн
[01:22:12 PM] Provodnik: ну каждый на своей стороне.. пока..
[01:22:42 PM] Provodnik: ты и сам с этого начинал, заискивающе спрашивая что и где в прошивке находится
[01:22:59 PM] tmp_do: Provodnik: мне никто не сказал
[01:23:05 PM] Provodnik: знаю
[01:24:04 PM] tmp_do: карта мтд в топике у3 есть параметры жффс тоже есть что еще надо?
[01:24:12 PM] Borman: Provodnik, пропатчь драйвер jffs2
[01:24:12 PM] Borman: чтобы сделать его несовместимым с оригинальным
[01:24:12 PM] Moxa: бга
[01:24:12 PM] Borman: тупые хомячки не догадаются
[01:24:12 PM] w4tch3r: ты жисток
[01:24:12 PM] Provodnik: Borman: можно поподробнее
[01:24:12 PM] Borman: magic константу смени
[01:24:12 PM] Borman: и все
[01:24:12 PM] Borman: монтировать его нормальный драйвер откажется
[01:24:34 PM] Provodnik: что за magic константа, где искать? я даже не туплю, я об этом ничего не знаю
[01:24:44 PM] Borman: почитай сорцы
[01:24:55 PM] Borman: ты учти, что делом ты занимаешься незаконным
[01:24:59 PM] Borman: так-то
[01:25:09 PM] Moxa: Provodnik: ты решил ирис защитеть от копирования?
[01:25:15 PM] Moxa: не правильно...
[01:25:24 PM] Tengoku: перацкие прошивки моторлэ!
[01:25:27 PM] w4tch3r: опенсорс внутри опенсорса
[01:25:30 PM] Moxa: ну или не от копиррования-не правильно написал
[01:25:31 PM] Tengoku: перацкий линупс!
[01:25:35 PM] Borman: Provodnik, ее никто не будет покупать, ты учти
[01:25:39 PM] Moxa: бггг
[01:25:41 PM] tmp_do: Provodnik: жффсдамп фсе равно покажэт кто где срал
[01:26:02 PM] Moxa: платные прошивки для а1200))))
[01:26:06 PM] w4tch3r: Tengoku, ты же не просто так пришёл, верно?
[01:26:15 PM] Moxa: Tengoku: бери бабки за готовое кутопиё на 2,6...
[01:26:23 PM] Moxa: ))
[01:26:29 PM] Moxa: буиш милианерам
[01:26:47 PM] Moxa: пинг
[01:26:47 PM] Жупел: Moxa: понг от тебя 0.551 секунд
[01:27:10 PM] Provodnik: я и не собираюсь ее продавать )
и мне пофиг что ее смогут разобрать те, кто сможет сделать дамп
я не хочу чтобы ее растащили те, кто ообще не разбирается, а преценденты уже есть, причем крайне нескромные
[01:27:26 PM] Moxa: Provodnik: например?
[01:27:59 PM] Provodnik: без имен, но в открытую попросили бету Айрис чтобы чуточку "подправить" - О_О !!! и выложить
---
[01:43:15 PM] Provodnik: Borman: magic константа это ramdownloader 3-ий?
[01:43:22 PM] Tengoku: гг
[01:43:48 PM] Tengoku: Provodnik, у тебя сорцы едра вообще сь?
[01:43:56 PM] Provodnik: нет
[01:43:59 PM] Tengoku: а кросскомпелятор?
--
[01:44:29 PM] Borman: Provodnik, у тебя какая цель в разраюотке этой прошивки?
---
[01:45:22 PM] Provodnik: нет, доделать наконец.. и свалить
для справки: Provodnik - модератор одного из разделов рассадника, Tengoku - я, остальных все и так знают.
суббота, 5 сентября 2009 г.
Сложный результат интерференции нескольких багов
Первое и самое интересное - почему подсветка вообще дергается при смене трека? Потомучто есть такая штука, как power constraints, которая регулирует, насколько далеко устройству можно уходить в сберегающих режимах. Вполне естественно, что телефон не может играть музыку, когда он находится в слипе.
Исходя из этого здравого рассуждения, медиасервер запрещает уходить в слип, когда проигрывает что-то. Когда проигрываение останавливается, плеер снимает разрешение.
И тут закрадываются внеземная логика работников тролльтех: при смене power constraint, нужно включить подсветку. При чем это делает кто-то аж изнутри QtGui, а код там загадочен.
Делаю ход конем: режим меняется не тогда, когда меняется состояние плеера "играю-неиграю", а через две секунды. Проверяю: не работает. То есть работает, но подсветка все равно мигает на смене трека. Для проверки, убираю из медиасервера управление питанием - моргает. Магия... Стоп, магии же не бывает.
Смотрю код медиадвижка, благо багов там обычно есть: он питание вообще не трогает. Смотрю код плеера и вижу чудеса: плеер запрещает выключать подсветку, когда проигрывает видео. Это меня не касается - видео я не смотрю. Для проверки, убираю из плеера код управление питанием - не моргает. Оппа, "связистор опять выловил что-то за хвост из болота", как сказал тридемоделятор azcapone.
Судя по коду, в плеере есть некий "медиавиджет", который создается при наличии видео. Если виджет есть - питание трогаем, если нету - не трогаем. Но виджета же нету, почему тогда мограет? Нахожу замечательный факт:
notifier = new QMediaControlNotifier( QMediaVideoControl::name(), this );
connect( notifier, SIGNAL(valid()), this, SLOT(activateVideo()) );
connect( notifier, SIGNAL(invalid()), this, SLOT(deactivateVideo()) );
при чем в deactivateVideo() дергается управление питанием без проверки виджета.
Опять патч в одну строку, а началось все с того, что я хотел замерить, сколько телефон живет от одного заряда батареи.
четверг, 3 сентября 2009 г.
Зарядка батареи
вторник, 1 сентября 2009 г.
Итоги тестирования: баги, тысячи их
* зарядка батареи. работает, но как-то очень хитро - или не стартует когда нада, или не до того тока заряжает. непонятное явление. у меня не хватило одной зарядки более чем на 12 часов почти постоянного нахождения в слипе. правда, это был не дип-слип, как в 2.4, а обычный - надо свериться с мануалом по процессору, вдруг так и надо. нарою вольтметр и буду сверять датчики и регистры с суровой реальностью
* звук. с перключениями звука фигня довольно понятная - перед переключением в режим звонка, надо закрывать в плеере устройство и все будет хорошо. сейчас при прослушивании музыки через уши, после снятия трубки нифига не слышно
* мерзенький bp иногда не опознается при выходе из слипа. наверное нужно более точно подобрать задержки
* в прошивке по-дефолту отключен тач. ну это все знают
* а на едва по-дефолту не пашет клавиатурный ввод, потомучто нет двух волшебных файликов
* автоматическое редактирование defaultbuttons.conf через postinst не срабатывает
* в прошивке по-дефолту стартует apmd, который тоже роняет аппарт в слип
* самое противное забыл: ядро валится в упс и виснет при перезагрузке
среда, 26 августа 2009 г.
Обновление и виндовая сборка putusb
В каталоге "openezx" виндовой сборки лежит драйвер (libusb), который нужно установить для работы программы. Если уже установлены мотороловские драйвера - надо установить libusb отдельно отсюда.
Тестируйте: обычный архив, виндовая сборка
вторник, 25 августа 2009 г.
Русский ввод на E2
воскресенье, 23 августа 2009 г.
Прошивка test1
Брать по ссылке, шить через qputusb.
Процедура прошивки:
* Распаковываем архив по ссылке
* заводим тело в бут (MBM) и подключаем к хосту
* жмем "Find device" в qputusb
* жмем "Flash" - в память тела грузится blob, после этого появляется диалог выбора файла - выбираем "flash" из распакованного архива
* ждем пока возле кнопки "Find device" исчезнет надпись "flasing", а в виджете лога появится "ok"
* вводим параматры блоба - в текстовое поле пишем параметры запуска ядра, в боксе выбираем модель телефона (минг, ешесть или едва) и жмем "Write config"
upd. параметры ядра вот такие:
ubi.mtd=rootfs root=ubi0:rootfs rootfstype=ubifs ip=192.168.10.4:192.168.10.1:192.168.10.1:255.255.255.0 debug mem=32M@0xa0000000 mem=16M@0xac000000 usbcore.autosuspend=-1 usbcore.old_scheme_first=1
пятница, 21 августа 2009 г.
Про минг
Бороться с ramldr2, который стирает, но не пишет - пока не осиливаю.
воскресенье, 16 августа 2009 г.
чуть про магиксы, bp и что с ними делать :)
идея - если кто решит следовать - такая, вырубаем подпись ап - это давно уже сделано, грузим свой бут, дальше - есть в исходниках что мото изволила нам подарить.. sdma - в ядре кое что есть.
профит: локов не боимся, т.к. умеем писать шифрованные симы, да и вообще что угодно, pds вообще не боимся..
пятница, 14 августа 2009 г.
putusb
Никто не угадал. Это новая утилита для прошивки, сделанная специально для gen-blob и ядра openezx, но может использоваться для прошивки любых ezx gen2 любой прошивкой на любой адрес. Сборка под эти ваши винды будет потом.
Консольная версия этой радости (точнее либа) умеет работать с родными загрузчками LTE (гадость на которой сделан наш bp и всякие древние e398).
Прошивки нового формата будут выглядеть, как архив любого типа (например zip или lzma) с файлами кодовых групп и простым файлом описания.
Пример файла:
kernel=0x000e0000 2097152
kernel zImage
gen-blob blob
Это означает "ядро будет по оффсету 0x000e0000, максимальный размер - 2097152, писать туда файл zImage из того же каталога, а файл blob писать не знаю куда, посмотри где там есть раздел с именем gen-blob"
Кроме этого, утилита умеет писать/читать раздел с параметрами gen-blob, которые позволят ему работать без карты. Патч для генблоба я пока не привел в человеческое состояние, так что тыкать кнопку "write config" не рекомендую - на текущей карте адресации потрете что-то важное.
тыц: ссылка на гит или ссылка на тарбол
ps:
при работе из линукса - положите gen-blob сюда: /lib/firmware/ezx/gen-blob
запускать или от рута, или кинуть правило udev (отсюда) в /etc/udev/rules.d/ и перезапустить udevd
четверг, 13 августа 2009 г.
Вырвиглазное видео
среда, 12 августа 2009 г.
Звук, черт побери
В коде микшера черти-что, при чем непонятно - или я не осилил, как его юзать, или его просто кое-кто недописал.
Надеюсь, что поправим и его наконец-то заберут в ваниллу - надоел уже.
mplayer
вторник, 11 августа 2009 г.
BUSTED!
/*
* As of 2.6.10 we introduce a new USB device initialization scheme which
* closely resembles the way Windows works. Hopefully it will be compatible
* with a wider range of devices than the old scheme. However some previously
* working devices may start giving rise to "device not accepting address"
* errors; if that happens the user can try the old scheme by adjusting the
* following module parameters.
*
* For maximum flexibility there are two boolean parameters to control the
* hub driver's behavior. On the first initialization attempt, if the
* "old_scheme_first" parameter is set then the old scheme will be used,
* otherwise the new scheme is used. If that fails and "use_both_schemes"
* is set, then the driver will make another attempt, using the other scheme.
*/
Вобщем BP после саспенда работает. Осталась всякая ерунда и будет щасте.
Если кратко - таймауты и последовательность инициализации в hub.c все решили.
воскресенье, 9 августа 2009 г.
Магия линейного процессора
Врубаю обратно, usb не трогаю, вместо этого перевожу bp в флешмод (ставлю ногу flash в 1 и делаю ресет), прохожу хендшейк по gpio. Вот теперь включаю порт и девайс - драйвер usb контроллера замечает, что устройство изменилось во время слипа и опознает новое (0x4003).
[ 20.911537] flash: 0
[ 20.920759] flash: 512
[ 20.927860] reset bp
[ 20.934154] bp handshake entered!
[ 20.941279] ezx-bp: handshake step 1
[ 20.948080] ezx-bp: handshake step 2
[ 21.240547] BP rdy irq
[ 43.045223] usb 1-3: reset full speed USB device using pxa27x-ohci and address 5
[ 43.266384] usb 1-3: device firmware changed
[ 43.271897] usb 1-3: USB disconnect, address 5
[ 43.465206] usb 1-3: new full speed USB device using pxa27x-ohci and address 6
[ 43.697291] usb 1-3: configuration #1 chosen from 1 choice
А тепер без перевода в режим флеша. Бутаем телефон, проходим хендшейк, девайс опознается, саспендим usb девайс, саспендим usb порт, саспендим ap. Просыпаемся, врубаем порт, врубаем девайс - ДЕВАЙС ТУПИТ и не отвечает на контрольные запросы, но при этом моргает ногой (ааа! включите меня!) и потом валится в панику.
[ 25.704865] usb 1-3: reset full speed USB device using pxa27x-ohci and address 5
[ 25.718791] BP rdy irq
[ 25.838537] usb 1-3: USB disconnect, address 5
[ 26.194880] usb 1-3: new full speed USB device using pxa27x-ohci and address 6
[ 35.436193] BP rdy irq
[ 35.441631] BP Lowered WDI line. This is not good :(
[ 41.384807] usb 1-3: device descriptor read/64, error -110
[ 41.684849] usb 1-3: device descriptor read/64, error -62
[ 41.974861] usb 1-3: new full speed USB device using pxa27x-ohci and address 7
[ 42.164846] usb 1-3: device descriptor read/64, error -62
[ 42.454801] usb 1-3: device descriptor read/64, error -62
[ 42.744881] usb 1-3: new full speed USB device using pxa27x-ohci and address 8
[ 43.174716] usb 1-3: device not accepting address 8, error -62
[ 43.364761] usb 1-3: new full speed USB device using pxa27x-ohci and address 9
[ 43.794714] usb 1-3: device not accepting address 9, error -62
[ 43.805893] hub 1-0:1.0: unable to enumerate USB device on port 3
А теперь третий фокус:
Делаем все то же самое, что и в первом случае, но ресет bp делаем без перевода в флешмод - девайс проходит хендшейк, но по usb опять не отвечает.
Рабочая гипотеза - bp не замечает, что надо ресетнуть usb со своей стороны. Чисто теоретически, это должно делаться через single-ended zero - установку двух ног usb в 0 на 10 msec, но это не работает (или я неправильно делаю?), и ничего похожего я в старом ядре не вижу. Зато в старом ядре есть куча непонятной возни вокруг ног 90, 91 и 113 - те пины usb, что идут от хоста к устройству.
среда, 5 августа 2009 г.
Айкамэшэрбуды шайтан поломался
CPU0 attaching NULL sched-domain.
CPU1 attaching NULL sched-domain.
CPU2 attaching NULL sched-domain.
CPU3 attaching NULL sched-domain.
И всё. ФС не юзабельна, система не юзабельна Иксы рисуют картинку только если двигать мышкой (!!!). Ребут только через SysRq. top не пашет htop пашет, но загрузку процов не показывает, ошибку говорит какую-то (не помню).
Илья говорит - перегрев. В общем, билдхост отключен на неопределённое время. Если кому чо припрет слить - я в жаббере.
UPD: почистил БП, отключил HPET, пробуем. Если всё хорошо - значит, всё хорошо.
UPD2: Хуц. Опять сдох. На этот раз получилось снять dmesg.
понедельник, 3 августа 2009 г.
Вроде живое
За полтора года первый раз разбирал аппарат. Мерзость проведения тп в припаянных защитных кожухах на микросхемах (на картинке видны его контуры) - еле отцепил.
пятница, 31 июля 2009 г.
Внезапный тестпоинт?
И еще словил вот такой замечательный фокус:
[ 8.480980] pxa27x-ohci pxa27x-ohci: GetStatus roothub.portstatus [2] = 0x00130103 PRSC PESC CSC PPS PES CCS
[ 8.493472] hub 1-0:1.0: unable to enumerate USB device on port 3
[ 8.505488] hub 1-0:1.0: state 7 ports 3 chg 0000 evt 0008
[ 8.517448] pxa27x-ohci pxa27x-ohci: GetStatus roothub.portstatus [2] = 0x00030101 PESC CSC PPS CCS
[ 8.529480] hub 1-0:1.0: port 3, status 0101, change 0003, 12 Mb/s
[ 8.699736] hub 1-0:1.0: debounce: port 3: total 100ms stable 100ms status 0x101
[ 8.829765] pxa27x-ohci pxa27x-ohci: GetStatus roothub.portstatus [2] = 0x00100103 PRSC PPS PES CCS
[ 8.899751] usb 1-3: new full speed USB device using pxa27x-ohci and address 6
[ 9.029666] pxa27x-ohci pxa27x-ohci: GetStatus roothub.portstatus [2] = 0x00100103 PRSC PPS PES CCS
[ 9.129612] usb 1-3: ep0 maxpacket = 8
[ 9.142082] usb 1-3: default language 0x0409
[ 9.151041] usb 1-3: udev 6, busnum 1, minor = 5
[ 9.156380] usb 1-3: New USB device found, idVendor=22b8, idProduct=4903
[ 9.167987] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 9.180013] usb 1-3: Product: S Blank Neptune LTE2
[ 9.185511] usb 1-3: Manufacturer: Motorola
[ 9.192990] usb 1-3: uevent
[ 9.215618] usb 1-3: usb_probe_device
[ 9.222460] usb 1-3: configuration #1 chosen from 1 choice
[ 9.249015] usb 1-3: adding 1-3:1.0 (config #1, interface 0)
[ 9.262191] usb 1-3:1.0: uevent
[ 9.289933] usbserial_generic 1-3:1.0: usb_probe_interface
[ 9.302780] usbserial_generic 1-3:1.0: usb_probe_interface - got id
[ 9.340334] hub 1-0:1.0: state 7 ports 3 chg 0000 evt 0008
[ 32.936371] rdy: 1
То есть bp ВНЕЗАПНО перезагрузился и его бут подумал, что флешка чистая, предлагая его шить с ap. Повторить не удалось - все остальные разы bp не хотел подключаться после резюма. На всякий случай - лог этого безобразия: http://pastebin.com/f33b62daa
UPD: опять вылезло. видимо, это не случайный глюк, а закономерный баг. А я был почти уверен, что в этот раз получу обратно модем.
UPD2: и опять...
четверг, 30 июля 2009 г.
Прелинкуемся
пока другие воюют с бп, таки вымучал prelink, постиг частично магию кросс-компиляции. На глаз особого профита от использования не заметил, но возможно он и есть. Надо было перед использованием и после сделать замеры :)
для пользования необходимо все разделы фс перевести в rw, положить в /etc http://ezxdev.org/qtopia/tmp_do/prelink.conf , после запустить http://ezxdev.org/qtopia/tmp_do/prelink с ключиком -amR
вторник, 28 июля 2009 г.
Как регистр назвали, то он и показывает
PFER registers) caused a wake-up from standby, sleep or deep-sleep mode. These bits can be set
only by a rising edge, falling edge, or either on the given GPIO pin, depending on the settings in the PRER and PFER registers.
Вобщем показывает на того педр^W^W ту ногу, за которую дернули, чтобы железка проснулась.
Следующий кандидат на жертву двухмесячного марафона "кто больше обматерит этот драйвер" - PCAP. Теперь, при входе в слип, нам мешает он - быстро-быстро вытаскивает обратно.
UPD: все не так страшно - это всего-то драйвер rtc.
Не верь глазам своим: магии не существует
Небольшая предыстория: в телефоне есть два проца AP и BP.
На ap имеем линупс, на bp имеем vrtx. Если кто не в курсе, bp - это LTE2 Neptune (arm7tdmi), огрызок старой платформы, отвечающий за GSM.
У процессоров есть два способа общения: первый - ноги gpio, их пять штук ( bp_rdy, ap_rdy, reset, flash и bp_wdi ), второй - usb.
По usb они гоняют данные, по ap_rdy и bp_rdy они при буте делаеют хендшейк (это их первое назначение). Когда bp что-то хочет от ap, он делает вот такой фокус:
смотрит, не спит ли ap, если спит, то:
ставит bp_rdy в 0, ждет чуть-чуть, ставит bp_rdy в 1 и опять смотрит.
Так до тех пор, пока AP не включится сам и не включит usb.
На это дело (мигание ноги bp_rdy) срабатывает прерывание и ap смотрит, чо там хочет этот убогий.
Если же ap что-то хочет от bp, он просто шлет по usb данные.
Дальше начинается самое интересное: когда ap хочет, чтобы bp ушел спать (сам ap не идет спать, пока bp не спит), он просто саспендит usb порт.
Если bp видит, что ap потормозил порт, но сам он еще имеет чего слать туда, то он саспендит порт, но при этом не саспендится сам, а один раз передергивает bp_rdy.
Когда ap видит, что bp дергает bp_rdy, он шлет по usb запрос на передачу.
Когда ap хочет что-то послать bp (например запрос на передачу), то сначала смотрит не спит ли bp если спит, то он передергивает ap_rdy, а потом уже врубает порт.
Что собственно происходило такого нехорошего и заставляло думать, будто bp не идет спать:
саспендим порт и видим, что дергается bp_rdy. BP не разрешает слип, думаю я.
BP не может отменять слип
BP не отменяет слип
BP совершенно незачем отменять слип
BP тупо пошел и слипнулся, как ему и сказали
...и поставил ногу bp_rdy в нуль.
А какой-то нехороший человек перепутал направление интеррапт лайна и генерит прерывание по переходу 1->0 (надо по 0->1, как в 2.4). В итоге ap думает, что bp отменило слип и врубает порт обратно. AP смотрит, что оно проснулося и спрашивает "нучо?". Тот молчит, потомучто нечего ему слать - он разрешил слип AP, сам тоже пошел спать, а тут к нему пристали.
Естественно, что после изменения типа ноги с IRQ_FALLING_EDGE на IRQ_RISING_EDGE все благополучно прошло.
UPD:... но ap он слипаться все равно не разрешает.
UPD: дергает ap из слипа через раз. ГРР
пятница, 24 июля 2009 г.
Прошивка из пингвина
Для себя написал скрипт, который всё делает быстро и красиво.
Для работы кроме него потребуется boot_usb, sbf_build и gen-blob.
boot_usb, sbf_build и flash.sh ложим в любую папку из $PATH - например /usr/local/bin/
Естественно на них надо дать права на выполнение.
chmod 755 /usr/bin/{flash.sh,sbf_build,boot_usb}
gen-blob - в /lib/firmware/
Теперь запускаем flash.sh и параметром передаём ему файл прошивки.
flash.sh /home/pupkin/qtopia-ezx-4.3.4_sdhc-30.04.09.sbf
Дальше всё просто - следуем указаниям скрипта и отвечаем на его вопросы.
Если телефон уже находится во флэш-режиме, то на вопрос "gen-blob уже загружен? (yes/no):" отвечаем "no"
Если необходимо прошить только определённые группы, то на "Все CG прошивать? (yes/no):" отвечаем "no". В этом случае перед прошивкой каждой кодовой группы скрипт будет спрашивать.
Т.к. boot_usb для работы нужны рутовые права, то скрипт запускаем либо от имени рута, либо добавляем SUID бит на boot_usb.
chmod +s /usr/bin/boot_usb
четверг, 23 июля 2009 г.
Новости
Что хуже - в ванильном ядре что-то такое опять сделали, что BP перестал работать вообще. При чем в самый интересный момент, когда я собрался с мыслями и сделал нормальный невелосипедный субдрайвер для usb-serial. Что там такое произошло - фиг его знает, но надо лезть и разбираться. Последний рабочий коммит - 0533a7bcf9a07863a145c6463985d561be76ef56.
Что еще хуже - даже до поломки BP все равно не хотел уходить в слип, так что я сейчас постепенно пробираюсь в его недра и буду его жестоко мучить, чтобы выяснить, почему именно он дает запрет.
Первые результаты этого вандализма - патч к boot_usb для чтения памяти (флеша) BP. Как оказалось, там все плохо: родной загрузчик проверяет подписи того что пишут (это патчится), того что запускают (это ломается на лету) и не дает возможности читать и писать произвольные адреса и объемы данных.
Читать он дает только флеш BP, да и то не весь (зону PDS не дает), а писать - только определенные кодовые группы, при чем целиком. Придется делать как на EZX и запускать из-под родного бута кастомный (олдскульных мотохакеров с мотофана), при чем запускать через дыру, чем я сейчас и занимаюсь.
понедельник, 22 июня 2009 г.
PCAP в ванильном ядре
Чтобы это еще кто-то юзал...
А я все не могу победить слип в этом самом bp.
upd: pcap - это контроллер специального назначения, на котором висит почти вся периферия в ezx-телефонах: тач, звук, adc, часы, регуляторы питания, кнопка включения и еще всякие лампочки и вибраторы. более новая инкарнация этой мерзенькой железки (atlas) - заведует тем же самым, но в мотобагиксах, при чем имеет тот же интерфейс (прерываения и регистры почти совпадают).
воскресенье, 14 июня 2009 г.
Как пользоваться boot-usb и gen-blob
Flash mode - режим работы телефона, в котором невозможна связь с сетью, так как линейный процессор ждет обновления прошивки.
MBM - загрузчик с красным экраном, через который работают мотороловские утилиты прошивки.
Gen-blob - загрузчик openezx, обладающий большим набором возможностей, чем MBM. Шьется вместо ядра linux, умеет грузить ядро с карты памяти и с usb без перевода в flash mode, умеет шить произвольные адреса флеша.
Boot-usb - утилита для работы с загрузчиками MBM и gen-blob с большой машины.
Последние версии ядра openezx можно запустить только через gen-blob. Сам gen-blob может работать в двух вариантах: прошитым по адресу 0xa0800 вместо ядра или запущенным по usb через mbm. Во втором случае линейный процессор уже переведен в flash mode и работа с сетью будет невозможна после загрузки ядра, но для прошивки этого достаточно.
Gen-blob обрабатывает нажатия на кнопки vol+ и vol- (левая сторона устройства). Если во время его запуска зажата vol+, он переходит в режим USB (как MBM) и ждет управляющих комманд от boot-usb. Если зажата vol-, он показывает boot menu с возможностью выбора разных ядер с карты.
Чтобы прошить файл в память телефона по определенному адресу, нужно сделать три вещи:
- Каким-то образом запустить gen-blob
- Во время запуска зажать vol+
- Послать адрес и данные через boot-usb
Рассматриваем подробнее:
Самый простой способ запустить gen-blob - запусть через MBM. Для этого нужно выполнить такие действия:
- Полностью выключить телефон
- Включить с переводом в flash mode - зажатой кнопкой голосового меню (нижняя на правой стороне)
- Дать от пользователя root команду boot_usb gen-blob на большой машине. При этом boot_usb должен находиться в PATH (или вызваться по полному пути), а файл gen-blob должен быть в текущем каталоге
После того, как на экране появилось сообщение о готовности принимать команды по USB, можно работать из boot_usb с gen-blob.
Простой пример: прошивка файла по адресу 655360. boot_usb flash 655360 mtd.
Небольшое уточнение по поводу прошивки ядра: чтобы прошить ядро или gen-blob по адресу 0xa0800, нужно создать временный файл размером 0x800, заполненный нулями: dd if=/dev/zero of=/tmp/mtd bs=2048 count=1, после чего дописать в его конец нужные данные: cat gen-blob >> /tmp/mtd и после этого, прошить файл по адресу 0xa0000, а не 0xa0800.
ps. пребуются добровольцы для описания этого в вики
upd: не 0xa800 а 0xa0800
Тестируем 2.6.30
Необходимые для запуска ингридиенты:
- Загрузчик gen-blob зашитый по адресу 0x000A08000 [1]
- Утилита boot-usb на большой машине [2]
- Раздел с ext2 на карте памяти с рутфс
- Рутфс дистрибутива Angstrom со всеми зависимостями для кутопии [3]
- Сама кутопия [4]
- Ядро 2.6.30-ezxdev [5] и модули [6]
- Инициализатор mux TS07.10 [7]
- Скрипт [8] и конфиг Qtopia [9] в /etc/
- Калибровки тачскрина [10]
upd: правильный адрес ядра - 0x000A08000
суббота, 13 июня 2009 г.
Консоль на EMU
Патчем ядра переключил ноги 39 и 53 из режима usb в режим uart (ffuart). Регистры EOC (чип EMU порта) не трогал. В будущем хочется переключать режимы uart/usb автоматически, по показаниям eoc и pcap. Мусор на скриншоте - скорее всего недостатки схемы.
Ссылки: схема и описание, патч.
пятница, 12 июня 2009 г.
Пингвин жирный...
total used free shared buffers cached
Mem: 44352 42844 1508 0 228 12160
-/+ buffers/cache: 30456 13896
Swap: 32760 16048 16712
Утопический:
total used free shared buffers cached
Mem: 46552 45652 900 0 144 26844
-/+ buffers/cache: 18664 27888
Swap: 0 0 0
Такие дела
ps. образы ведроида тут
pps. нихера там не пашет, можете даже не качать
понедельник, 8 июня 2009 г.
Сериал консоль на EMU
Попробовал переключить EOC во второй режим UART (ноги 53 и 39 выводятся на usb порт) и "подрыгать" ногами - ничего со стороны хоста не увидел. Со стороны аппарата rx тоже все время 0. Драйвер сериал порта на gpio - тоже писать придется.
Попросил припаять к конвертеру диоды для индикации RX и TX - завтра попробую еще.
upd: все-таки туда можно сконфигурировать FFUART. утром попробую
воскресенье, 7 июня 2009 г.
В порядке эксперимента
Модерация в том виде, в каком она есть не мф, отсутствует, движок аскетичный, но удобный и многим привычный.
Мотофан.jpg
Openezx 2.6.30-rc8
* gsm (ts0710) переписан и работает стабильно
* звук поломали в апстриме, но лечится патчами (а может в гите уже починеный)
* сеть по usb работает только если бутать по нему же
* карта
* внутренний флеш, при чем с нормальной скоростью записи
* тач, подсветка, все кнопки
* вибра
* блютуз, включение выключение питание на него
* получения параметров батареи (% заряда) через /sys и /proc/apm
* обрабатывается подключение/отключение кабелей ac и usb, состояние доступно через /sys
* старт/стоп процесса заряда при подключении кабеля (с патчем на pda_power)
* слип и глубокий сли (idle и mem). для deep-sleep (mem) нужно патчить lbl (мотороловский бут)
не работает:
* gprs
* камера
глюкает:
* adc (тач и батарея)
* слип - то одно отвалится, то другое упадет. bp очень любит этим заниматься
упд: звук в гите совсем поломан. сглазил наверное
пятница, 5 июня 2009 г.
Написание мультиплексоров прерываний - заразно
В погоне за красотой решения, иногда теряешь цель - сделать сделать этот кусок кода полезным.
Почему понял - сам захотел написать демультиплексор прерываний на EOC (чип usb порта на gen2).
четверг, 28 мая 2009 г.
Sumatra тоже в строю
воскресенье, 24 мая 2009 г.
Двухпроцессорная архитектура EZX
Поскольку общей памяти они не имеют (в отличии от SCM-A на багиксе или MSM в HTC), то данными они обмениваются по самому обычному USB. В качестве хоста выступает AP (pxa270), в качестве устройства - BP (LTE2). Архитектурно это больше всего похоже на кпк (например ipaq), к которому по usb прицепили какой-нибудь E398.
В очень-очень старых моделях, которые никто никогда не видел и в руках не держал, вместо USB был RS232, который наверное любил терять данные по дороге. Что делают хорошие корпоративные программисты, когда железо глючит? Пишут костыли, куда они денутся. USB такого безобразия не допускает и сам следит за корректностью данных, но костыли конечно же оставили.
продолжение следует
среда, 20 мая 2009 г.
вторник, 19 мая 2009 г.
Helix DNA Client Atlas
Видео Qtopia крутит на минге вполне сносно, по крайней мере 3gp единственное что приходится держать в памяти библиотеки Helix и отображается вверх ногами и в стандартном плеере нет фулсрин режима.
пятница, 15 мая 2009 г.
Macau тоже в строю
Благодаря багу\фиче индусов из моторолы в паблик ушли практически полные сорцы ядра 2.4 для всей линейки езх. они там многое поломали, все унифицировали. старые патчи без напильника не проходят. мне удалось собрать полностью рабочее едро для минга. самое главное - работает натив для macau(E6), осталось прикрутить для него монолитом модем и кариес( а заодно таки и починить его). так же надо покурить насчет сдхц с а1600, по крайней мере сорцы там тоже есть. дальше собирать едро для е2 и выкладывать готовые прошивки.
зы. таки ждем 2.6
воскресенье, 10 мая 2009 г.
openezx 2.6.30-rc4
В моей рабочей версии оно работает, но звук опять немного поломан (наверное апстрим виноват) - вместо двух каналов работает один.
Контроль заряда я сделал, но из-за рефакторинга его сейчас не примут. Еще надо бы драйвер mux почистить - по словам wyrm, 60% кода - ненужное говно.
А еще там работает слип.
среда, 6 мая 2009 г.
Горжусь русским форумом мотофагов
Хронология событий:
* в конце 2005-го года моторола делает очередной недосмартфон на линуксе
* в середине 2006-го года принимается стандарт SDHC для карт высокой емкости, который не имеет обратной совместимости с SD (другая процедура инициализациия, другая адресация, другая структура служебной информации о карте)
* мотофаны честно ждут от моторолы обновления (три года)
* где-то в середине марта я набравшись терпения и используя драйвер в ядре 2.6, как референс, делаю поддержку sdhc в мотороловском ядре (самой карты не имея). после чего, как цивилизованный человек, выкладываю результаты в виде патча на исходники и собранного ядра для кутопийных прошивок
* мотофаны опять честно ждут, что кто-то все за них сделает и медетируют, глядя на патч на исходники и переживая культурный шок
* в начале апреля я выкладываю на русский форум, сообщение о текущем состоянии порта ядра 2.6 и делюсь мнением, что этим скоро можно будет пользоваться, что порождает фееричный холивар, так как мотофаги с малиновыми штанами зелеными никами не умеют ничего, кроме написания километровых постов о том, что они хотят, чтобы кто-то сделал.
* народный борцун за звание дома высокй культуры и быта тонко намекает, что я кому-то там хамлю и он против меня примет меры. я шаркаю ножкой и тихо боюсь
* в конце апреля какой-то китаец собирает ядро для родных прошивок с моим патчем для sdhc
* русский форум брызжет радостью "ураа! китайцы сделали sdhc"
* пару дней назад, зайдя на русский форум, я вижу вместо своего сообщения другой пост со ссылкой на собранной китайцем ядро и надписью "sdhc patch by Mingxing0769" и ругаюсь на написавших это мудаков матом, размещаяя у себя в подписи то, что я думаю о безруких анонистах
* мотофаги заменяют надпись на "автор патча Ilya Petrov, портировал Mingxing0769"
* я повторно ругаюсь на мудаков матом, так как сборку ядра с патчем портированием назвать не могу при всем желании, но замечаю, что борцуны за звание дома высокй культуры и быта уже потерли все следы и заблокировали мой аккаунт
* занавес
воскресенье, 3 мая 2009 г.
суббота, 25 апреля 2009 г.
Squares
Приложение является портированной на Qtopia 4.3 версией KSquares из KDE Source Repository.
среда, 15 апреля 2009 г.
Scribble+
Итак, Scribble+ - маленькая программа для рисования. Только рисования.
Возможности:
- выбор цвета в HSV пространстве, поддерживается прозрачность
- рисование штрихами произвольной формы настраиваемой толщины
- сохранение в любой из поддерживаемых форматов
вторник, 14 апреля 2009 г.
JumpingCube
JumpingCube - тактическая игра на захват территории для одного или двух человек.
Приложение взято из KDE Source Repository.
четверг, 9 апреля 2009 г.
Языковые пакеты
Изменения в управлении питанием
* убраны медленные режимы процессора (52 и 104) из APM
* вызов PMU поставлен на таймер, а не на черти-куда
* power_ic не открывается-закрывается туда-сюда
* кутопия считает usb-кабель зарядным устройством
* кутопия отображает состояние заряда батареи по текущему в цепях току, а не черти-чему
* значение датчика тока вынесено в VSO ( /Hardware/EZX/Current/Raw ), для любителей на него смотреть
упс.. забыл маленькую строчку
Камера
Снимать уже снимает, но кое-что еще поменять придется.
Кроме этого убрал один патч, который мог ломать выключение подсветки.
вторник, 31 марта 2009 г.
openezx-2.6.29
И так, что работает (с поддержкой в кутопии)
* gsm (АТ mux)
* звук в обоих режимах (музыка и gsm)
* переключение звука уши-динамик-спикер
* сеть через usb
* карта
* контроль подсветки
* клавиатура, кроме красной кнопки, флипа и кнопки наушников
* тачскрин
Что не работает, но вроде бы должно:
* встроенный флеш
* контроль заряда
* gprs
Что не работает совсем или глючит:
* определение подключенных шнуров
* спящие режимы
среда, 18 марта 2009 г.
Управление железом на багиксе
Определение подключенных к кабелей такое же, как и ezx, управление зарядкой такое же, управление rtc такое же (но изменены префиксы ioctlc).
С подсветкой пока не разобрался - костыль на костыле, режимы usb не нашел вообще, роутинг звука вроде бы нашел, но не проверял.
Начал писать pdsd - вроде бы все просто и подводных камней нет.
Закрытый флип и входящий вызов
Включено в автобилд 200903171449.
В автобилде 200903171534 включены конфиги из прошивки tmp_do и немного поломан виджет набора номера: картинки остались старые, а масштаб новый.
понедельник, 16 марта 2009 г.
Планы и перспективы портирования на Motomagx
Если кто сюда зашел из просторов интернета и не совсем в курсе наших обозначений: под мотобагиксом понимается программно-апаратная платформа linux-смартфонов motorola третьего поколения ( Rokr E8, Rizr Z6, Razr2 V8, i876, U9, ZN5 ).
BP на третьем поколении не такой разумный и ему нужно кормить с ложечки так называемый PDS (зашифрованные настройки), самим работать из юзерспейса с сим-картой, самим реализовывать кусок GSM (именно протокола, а не работы с оберткой at-команд) и GPRS, но тут работы уже ведутся и довольно успешно.
Кроме этого традиционные проблемы с нестандартностью API: звуковой драйвер - не oss, не alsa, всякие там режимы usb и токи заряда с уровнями подсветки - тоже. Тачпада просто нету, а клавиатура работает на старом драйвере - тут все хорошо.
В рутфс как всегда бардак - это дело привычное, это не удивляет и вообще не вызывает эмоций.
Сегодя запускал из ext2 образа - запускается, довольно шустро бегает по меню, но толку конечно нуль.
Собственно, программа нашего балета на новой сцене: MagixRoadmap
суббота, 14 марта 2009 г.
Поддержка sdhc
Патч на ядро: http://ezxdev.org/qtopia/patches/2.4.20_mvlcee31/0006-sdhc.patch.gz
Собранное ядро: http://ezxdev.org/qtopia/temp/vmlinuz_sdhc15
Собранное ядро уже содержит в себе поддержку mux, gprsv, bluez и ext2/3, поэтому модули mux_cli и прочие ему не нужны.
Ждите поддержку в следующих сборках прошивок или шейте сами.
Напоминаю, что ядро можно загрузить в режиме прошивки утилитой boot_usb, но при это не будет работать экран (про этом отдельно) и gsm.
Чтобы прошить ядро необходимо записать его в /dev/mtd7 (физический адрес 0xa0000) на смещение 0x800.
PS. за тестирование огромная благодарность Сергею Егорову (ник prapor).
PPS. со старыми картами тоже все нормально
пятница, 13 марта 2009 г.
Апгрейд Qt
понедельник, 9 марта 2009 г.
Mindbreaker
Mindbreaker - в этой игре Вашей целью является угадать задуманную программой комбинацию цветных шариков. На выполнение задания дается девять попыток.
Приложение взято из Qt Extended 4.4.3 Open Source Package.
суббота, 7 марта 2009 г.
QGoogleTranslate [port]
QGoogleTranslate - это приложение для работы с сервисом Google Translate. Использует AJAX Language API, что хорошо, учитывая GPRS соединение. (а еще я не стал писать хелп, большое упущение=)
Ссылки: страница на Google.Code
Qwit 0.6 [port]
Twitter (от англ. to twitter — «щебетать», перен. «болтать») — бесплатная социальная сеть, представляющая из себя систему микроблогов, позволяющая пользователям отправлять короткие текстовые заметки (до 140 символов). (Wikipedia)
Автор версии для Qtopia: kyst
Ссылки: Страница Qwit на Google.Code
пятница, 6 марта 2009 г.
Собрал новый билд
Решил таки включить в сборку тестовый рут-фс, собранный ое. кой-чего пофиксил по мелочам. что удивило- скорость загрузки и работы. это Ъ
Добавил в кутопию последние багфиксы- в частности, медиасервер теперь стабильно не валится при входящих, если стоит стандартный phonering.wav
вообще получилось очень Ъ. самое Ъ что теперь для е6 (возможно и для е2) не надо шить родное хакнутое едро-удалось допилить стабильную работу с USB2.0
из минусов- лень ковырять зависимости и пересобирать ядерные модули блюза, вкомпилил их в ядро. теперь невозможно включить прием файлов по кариесу из гуя...
будильник так и не научился играть дефолтный alarm.wav
http://ezxdev.org/qtopia/firmwares/a1200/qtopia-ezx-4.3.4-06.03.09_test.sbf.bz2
четверг, 5 марта 2009 г.
Убил очередного таракана в движке звука
Конечно же работа с памятью - после удаление объекта к нему успевало произойти обращение. Еще и потоки. Продолжаю ненавидеть этот объектно-ориентированый ассемблер.
Если на билдхосте опять ничего не сломается - забирайте автобилд с номером 200903060113.
Остается разобраться с еще одним тараканом в gsm и будет красота.
вторник, 3 марта 2009 г.
-1 партизан или nokia прекращает поддержку qtopia
Что это означает для нас? По большому счету - ничего. Поддерживаем форк дальше и не обостряемся.
воскресенье, 1 марта 2009 г.
Cute Gomoku [port]
Cute Gomoku - игра Гомоку против компутера. Нужно составить ряд из 5 шариков раньше, чем это сделает ИИ. Игра отличается феноменально медленным расчетом ходов) Для более-менее терпимого времени хода ИИ пришлось уменьшить searchDepth с 3 до 1. Имеется сохранение/загрузка игры, отмена/повтор ходов.
Нездоровые фокусы с дескрипторами в gprsv
Чтобы понять, откуда она берется и как ее чинить, нужно знать, как работает включение/выключение gprs на наших телефонах.
На обычной хосте с линуксом gprs работает так же, как и другие ppp соединения: pppd открывает линию, шлет в нее AT-команды дозвона, после чего через эту же линию гоняет ppp трафик в обе стороны. Тут следует заметить две вещи: pppd именно читает и пишет в эту линию все передаваемые данные, а под линией может подразумеваться все что угодно от банального ttyS0, напрямую подключенного к другой машине, до программы в пайпе, гоняющей трафик через xmpp.
На ezx все не так. Для работы с gprs у нас есть как минимум два канала мультиплексора: для команд и для данных. Для начала, мы открываем управляющий канал и пишем в него волшебные AT-команды, а потом сразу читаем оттуда свой ip и dns адреса провайдера, при чем в человекочитаемом виде, а не куском ppp-трафика. Потом мы открываем канал данных и устанавливаем ему line displine N_GPRS и ассоциируем его с сетевым интерфейсом gprsv0. Потом используем полученный в первом пункте адрес и настраиваем сетевой интерфейс, пишем dns в resolv.conf.
А где ppp трафик? Нету. Весь на BP остался.
Чтобы выключить gprs - просто закрываем канал с данными.
Все эти фокусы отрабатывают в qpe, но управляются из netsetup (Settings -> Internet). Раньше баг состоял в том, что дескриптор канала данных был полем класса, объект которого управлял ppp соединениями и жил в qpe. Проблема была в том, что объект существовал только во время работаы netsetup, хотя и находился в пространстве qpe. При этом сам файловый дескриптор никуда не пропадал, но его номер терялся и закрыть его было нельзя. Сейчас все наоборот: gprsv - глобальная переменная и никакие объекты ее не теряют, но после закрытия дескриптора в qpe, он продолжает оставаться открытым в новом процессе netsetup. После закрытия netsetup все приходит в норму.
Тут непонятен один момент: почему после запуска netsetup у него остаются все дескрипторы qpe.
Angstrom rootfs
Первую проблему я собираюсь решить каким-нибудь хитрым скриптом, который будет смотреть, что там на карте за разделы и монтировать их куда нужно ( ext2 с каталогом пользователя - в /home ), а бороться со второй не особо хочется, но все равно нужно. С иптаблесом что-то странное - как мне кажется, он не понимает, под какую версию ядра ему нужно было собраться и после загрузки на телефон не может работать с ядром.
А еще нужно привести все эти вещи к более приличному виду, а некоторые послать в апстрим.
среда, 25 февраля 2009 г.
Самый тупой баг в кутопии
--- a/src/applications/mediaplayer/playercontrol.cpp
+++ b/src/applications/mediaplayer/playercontrol.cpp
@@ -109,6 +109,9 @@ void PlayerControl::activate()
void PlayerControl::setMediaContent( QMediaContent* content )
{
+ if (m_control)
+ m_control->stop();
+
delete m_control;
m_control = 0;
Включено в билд 200902252257, отправлено в апстрим.
суббота, 21 февраля 2009 г.
mqutim
четверг, 19 февраля 2009 г.
Будильник
[Alarm]
file=/home/muromec/Documents/audio/Higurashi/01 - Main Theme - Hayashi.mp3
Всем кто будет ставить длинные файлы - обновитесь до 200902191641.
среда, 18 февраля 2009 г.
Изменения в автосборках
Плюс к этому генерируется md5sum для рапакованных и запакованных файлов.
Кому еще чего-то не хватает в автобилдах?
Новости 18.02
Звук: низкая громкость микрофона, возможное падение медиасервера из-за неинициализированного указателя (стыд мне).
Gsm: убрал старый хак для отбоя входящего вызова (теперь при отбое не дергается звук), не шлется лишне ATH и игнорируется один из индикаторов входящего вызова (тот в котором нет номера).
APM: при входящем вызове действительно повышается частота процессора до максимальной, то же самое происходит при открытии флипа.
Все эти радости в билде с меткой 200902181532.
понедельник, 16 февраля 2009 г.
Peg-E 1.0.0
[Бек]порт свеженькой игры Peg-E 1.0.0 от Graeme Gott.
Peg-E - это вариант пасьянса Ориентира, в котором Вам нужно перепрыгивать шашки, для того, чтобы убрать их с доски, в конечном счете, стараясь оставить лишь одну. Шашки можно перемещать по вертикали, горизонтали и диагонали. Доски создаются случайным образом, имеется 100 уровней сложности. Игра автоматически сохраняется, также присутствует возможность отмены/повторения ходов.
пятница, 13 февраля 2009 г.
Прошивка из linux
/* this is enough for a 16MB flash with 128kB blocks */
#define NUM_FLASH_BLOCKS (128 * 3)
Вполне логично для первого поколения, где было три банки памяти по 16mb. На втором получалась ерунда - шилась только половина второй банки.
четверг, 12 февраля 2009 г.
OpenEmbedded root и прошивка из linux
Лежит там же: http://ezxdev.org/qtopia/autobuild/
Отдельно про прошивку из линукса:
* берем раз: http://people.openezx.org/wyrm/boot_usb, и двас: http://people.openezx.org/wyrm/gen-blob/gen-blob
* берем трис: Angstrom-console-image-glibc-ipk-2009.X-test-20090212-a1200.rootfs.jffs2
* переводим аппарат в красный экран
* пишем заклинание нумер один: boot_usb gen-blob, одновременно совершая магический пасс зажатием клавиши vol+
* пишем заклинание нумер два: boot_usb read 1703936 24248320 root (сохраняем старый рут с оффсета 0x1a0000 в файл root)
* и нумер три: boot_usb flash 1703936 Angstrom-console-image-glibc-ipk-2009.X-test-20090212-a1200.rootfs.jffs2
После чего перезагружаем телефон и ждееем, ждееем, ждееем. Если все хорошо, должен включиться usb0: телефон по старому адресу 192.168.10.6, логин root, пароль пустой.
Смотреть внутри не на что, кроме того, что оно работает, пока его не перезагрузит цепной пес.
вторник, 10 февраля 2009 г.
OpenEmbedded и glibc
Теперь собирается образ, в который можно сразу делать chroot. Glibc та же самая (2.3.2) с теми же самыми патчами (набор из mkezx). Пара пакетов требует ручного вмешательства в процесс сборки и весь процесс далек от завершения, но положительные результаты радуют
http://ezxdev.org/qtopia/autobuild/Angstrom-console-image-glibc-ipk-2009.X-test-20090210-a1200.rootfs.tar
OpenEmbedded
Задача максимум - собираться через bitbake все вплоть до sbf и фида пакетов qpk.
Уже получилось сделать образ, в который можно, добавив libc вручную, чрутнуться и запускать софт из нескольких базовых пакетов.
Пытаться собирать им glibc из сорцов я наверное не буду - тут можно застрять надолго.
Поддержка DjVu
Правда, набыдлокодено у меня там в дежавю... нада будет капитально переработать код... но пользовацо можно...
YWeather
YWether очередная поделка для Qtopia :). Пагоду берет с weather.yahoo.com, траф жмется потребляется гдето в районе 1кб за раз. С yahoo берем код города(или до ближайшего крупного города) для которого её охото знать хотябы примерно. Если код не меняем то наслаждаемся прогнозом погоды для чудеснейшего из городов... Монголии - Улан-Батор :).
З.Ы.: Настройки:
1) код города идем на Yahoo. Заходим в раздел Weather ищем свой город (например http://weather.yahoo.com/Ivanovo-Russia/RSXX1366/forecast.html соответственно код RSXX1366)
2)выбрать температурную шкалу Цельсия/Фаренгейт.
3) т.к. кривизну рук компенсирую переодическими правками,... свежий пакет обычно есть