вторник, 17 ноября 2009 г.

Цепепе


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

понедельник, 16 ноября 2009 г.

Qtopia has been built.

Наконецто. Какой-то ужоснах на ровном месте. Осилил только с понижением версии кросскомпилятора и внутри 32-х битного дебиана.

среда, 11 ноября 2009 г.

Kobo-deluxe



Портировал таки старую добрую кобу :) лежит как обычно во временном фиде, ресурсы распаковать как обычно в ~/packages/sdl/$game
зы. со звуком в кутопие\сдл так и жопа. если в настройках убрать звуки роизводительность повышается на порядок

Арч, gcc, кутопия

НЕНАВИСТЬ!. moc собранный арчевым gcc-4.4.2 неосиливает что-то сгенерить (идиотские валится на undefined interface, привет Борману). Gcc из дебиана вообще неосиливает собрать moc и кумейк - вообще не понял, почему. llvm-gcc-4.2 собирает moc, который валится на сборке с другой идиотской ошибкой, опять же на ровном месте. Оба gcc-4.2 и 4.1 из aur не собираются вообще (один не жрет свой же дефолтный -mtune, другой орёт на прототип strsignal) и оба хотят локаль de_DE. Уродство. Заустали - поставлю дебиан в чрут и буду компилить там.

Ну это кроме того, что накрылся bh вместе с винтом (и краном у меня в ванной, АГГРХ).

UPD. Продолжение балета: поставил таки дебиан в чрут. хостовая часть собралась - теперь кросскомпилятор gcc-4.3.чототам неосиливает собрать кутю.

воскресенье, 8 ноября 2009 г.

Тем временем, в открытом космосе

Звук и зарядка ушли в openezx. Проснется азкапоне - буду обновлять код в кутопии, для работы с измененным интерфейсом звука.

суббота, 7 ноября 2009 г.

reverzi


порт с езх. реградсы AndRAY`ю
пакет во временном фиде, ресурсы распаковать как обычно в ~/packages/sdl/reverzi

суббота, 31 октября 2009 г.

QUAKE2



Q2. лежит во временном фиде. ресурсы лежат туд. распаковать в ~/packages/sdl/quake2/
без свопа не запускается. тормозит шибко-выдает не больше 3 фпс

четверг, 29 октября 2009 г.

QUAKE


порт под кутопие. пакет во временном фиде. ресурсы лежат тут . распаковать pak* в ~/packages/sdl/sdlquake/id1/
кстати отлично бегает и без свопа

среда, 28 октября 2009 г.

Магия? Нет никакой магии



Нет никакой магии!

Почему нет звука? Потомучто его нет. А нет его потому, что кто-то что-то сделал с SSP, по которому ходит звук.
Потомучто так не бывает, что все правильно, а ничего не работает.

воскресенье, 25 октября 2009 г.

hexen


очередной порт, лежит во временном фиде. ресурсы взять можно тут. ложить в ~/packages/sdl/hexen/
нужен своп, я тестил на 64М, 32 тоже должно хватить

Магическая магия

Есть звук. Есть четыре регистра, которые им управляют. Все регистры правильные. На ядре 2.6.30 работает, на 31 и выше - нет. Чудеса!

вторник, 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


почти юзабельно. осталось разобраться с кнопками и засунуть сдл в qt-виджет, чтоб небыло всякого мусора на экране Borman перелопатил код, теперь можно пользоваться.
собрал тестовую игрушку tower toppler, лежит во временном фиде http://ezxdev.org/qtopia/feed/tmp/
из-за наркотичного установщика пакетов ресурсы игр в qpk не засунуть. поэтому ресурсы хранятся в ~/packages/sdl/$game_name
для топплера ресурсы брать тут
собранные тестовые библиотеки сдл брать тут

воскресенье, 18 октября 2009 г.

Звук

Звук заслуживает отдельного опуса. На одной шине пять устройств (AP, BP, блютуз, радио и сам звук), звук состоит из двух цапов и усилка. А рулит всем конечно же AP. А на ап наркоманская подсистема звука и имей ей ASOC.

понедельник, 12 октября 2009 г.

Хауту по прошивке и восстановлению BP

Написал документик по использованию putusb для прошивки bp.

Восстановительная прошивка: тыц

Ахтнук: без бекапа ничего не шить.

воскресенье, 11 октября 2009 г.

openezx

Пока я чесал пятки с 2.6.30, в 2.6.32-rc1 звук доломали окончательно. Мало того, что BP там нету вообще, так оно еще и виснет при попытке что-то проиграть. Сейчас будет бессмысленный и беспощадный git bisect с Jun 17 по Oct 10, чтобы найти, когда оно поломалось.

воскресенье, 4 октября 2009 г.

Deep-sleep не помог

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

Вот он, powermanagement epic fail. Если скорость разряда еще можно объяснить тем, что моя банка деградировала, то разница во время слипа может означать только то, что кто-то лишний раз жрет электричество.

четверг, 1 октября 2009 г.

Безумный ихперименты

Лень патчить бутлоадер едва, чтобы он понимал, как вытаскивать openezx из дип-слипа. Прошыл минговый - работает... а я надеялся освоить jtag.

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 г.

bh@down

Эта собака опять греется и виснет, за что отключена и думает о своём поведении.

Радио минг

пакет с радио на минг (нуи е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 10 00 46 F4 00 00 00 B1 00 13 02 01 FF 00 09 84
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 10 00 E8 00 10 00 F0 00
00000030 10 35 08 00 00 00 00 00 10 08 00 00 28 63 29 20


Красным выделен адрес точки входа, синим - адрес подписи бута, зеленым - адрес прошивки. Лирическое отступление: код бутлоадера заканчивается по адресу 0x10005E10, подпись начинается с адреса 0x1000E800, между ними неиспользуема область, забитая 0xFF, в которую можно совершенно спокойно записать слово "ЗУБ".

Загрузчик с флеша запускается и начинает проверять подпись самой прошивки, для этого он читает заголовок прошивки с адреса, который написан в заголовке бута. Заголовок прошивки:


00080000 10 21 EF 95 00 00 00 B1 00 13 02 06 FF FF 11 52
....
000800A0 FF FF FF FF FF FF FF FF FF FF FF FF 10 33 00 00


Красным выделен адрес точки входа, зеленым - адрес заголовка подписи прошивки. Заголовок подписи прошивки:


00330000 10 33 00 10 00 00 00 B1 01 13 02 06 FF FF 11 52


Красным выделен адрес начала самой подписи.

Процесс проверки просходит так: узнаем адрес прошивки, узнаем адрес блока подписи прошивки и адрес самой подписи, читаем подпись, сверяем хеш блоков, адреса которых указанны в подписи с тем, что записан в подписи. Если все хорошо - запоминаем, что этот диапазон - доверенная область.

Затем читаем адрес точки входа - если он внутри доверенной обрасти, то передаем управление туда.
Зарытых собак тут несколько.

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

Кроме самой прошивки, в телефоне есть другие подписанные области: сам бут и 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 г.

Парам-пам-пам-пам-пам

Минг заработал. Vilko - бох. Ухахахаха!

вторник, 22 сентября 2009 г.

Обход RSA в BP минга

Пришлось запихнуть туда CG7 из E2 и понизить бут - тоже от E2.

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

Лоадер для RAMLDR2 лежит тут, сорцы - тут, спасибо Vilko.

Читает-пишет любые адреса (в том числе PDS). Бестолковые и беременные проходят мимо - я предупредил. Через тест-поинт точно грузится, через нормальный бут - вроде бы нет.

суббота, 19 сентября 2009 г.

QSolitaire


Теперь у нас есть пасьянс!!!

четверг, 17 сентября 2009 г.

Опять про зарядку

Ежели у кого еще осталась живая батарея - сбросьте показания датчика на старом ядре.

Интересуют циферки: максимально разряженный и максимально разряженный (каждое состояние в трех вариантах: с отключенным ЗУ, с подключенным ЗУ, с подключенным USB).

У меня полный заряд - 760, когда отключаю зарядное - быстро убегает до 620,615,600. Не осиливаю, или это батарея деградировала или кто-то опять дурак...

Usb-host

Что-то там такое интересное происходит. Правда непонятно, это только на E2/E6 или везде вокруг.

среда, 16 сентября 2009 г.

воскресенье, 6 сентября 2009 г.



портировал знаменитые шарики. !С Series60 :)

лежит в фиде 

Страна должна знать своих героев


[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 г.

Зарядка батареи

Заряжает до положенного напряжения. Вольтметр показывает три с копейками вольта, заряженная через openezx батарея дальше другим телефоном не заряжается.

вторник, 1 сентября 2009 г.

Про минг

Плохо без отлаженного инструментария.

Итоги тестирования: баги, тысячи их

После более чем недели издевательств, ubifs все-таки упала. По этому поводу я решил подвести итоги тестирования. Если кратко - баги везде, но фронт работ обозрим.

* зарядка батареи. работает, но как-то очень хитро - или не стартует когда нада, или не до того тока заряжает. непонятное явление. у меня не хватило одной зарядки более чем на 12 часов почти постоянного нахождения в слипе. правда, это был не дип-слип, как в 2.4, а обычный - надо свериться с мануалом по процессору, вдруг так и надо. нарою вольтметр и буду сверять датчики и регистры с суровой реальностью
* звук. с перключениями звука фигня довольно понятная - перед переключением в режим звонка, надо закрывать в плеере устройство и все будет хорошо. сейчас при прослушивании музыки через уши, после снятия трубки нифига не слышно
* мерзенький bp иногда не опознается при выходе из слипа. наверное нужно более точно подобрать задержки
* в прошивке по-дефолту отключен тач. ну это все знают
* а на едва по-дефолту не пашет клавиатурный ввод, потомучто нет двух волшебных файликов
* автоматическое редактирование defaultbuttons.conf через postinst не срабатывает
* в прошивке по-дефолту стартует apmd, который тоже роняет аппарт в слип
* самое противное забыл: ядро валится в упс и виснет при перезагрузке

среда, 26 августа 2009 г.

Обновление и виндовая сборка putusb

Исправлены падения, неправильный подсчет процентов и собрана версия под винды.

В каталоге "openezx" виндовой сборки лежит драйвер (libusb), который нужно установить для работы программы. Если уже установлены мотороловские драйвера - надо установить libusb отдельно отсюда.

Тестируйте: обычный архив, виндовая сборка

вторник, 25 августа 2009 г.

Русский ввод на E2

Оказывается, что все делается очень просто. Русские буквы нужно было писать в QtopiaDefaults.ts (локаль) и использовать конфиг кнопок от гринфона.

воскресенье, 23 августа 2009 г.

Прошивка test1

Содержит в себе gen-blob с патчем для работы без карты, ядро 2.6.30 с бекпортами разных хороших вещей, ангстром рутфс (ubifs) с кутопией 4.3.

Брать по ссылке, шить через 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

Ubifs

Полезная штука, надежней jffs2. Ссылки: раз и два

пятница, 21 августа 2009 г.

Про минг

Флеш не мертвый, флеш живой, с pds тоже все вроде бы в порядке. Дамп сделал.

Бороться с ramldr2, который стирает, но не пишет - пока не осиливаю.

понедельник, 17 августа 2009 г.



осваиваю по-тихоньку систему сборки кутопии, одновременно и с++

завернул в фид скриншотилку 


воскресенье, 16 августа 2009 г.

чуть про магиксы, bp и что с ними делать :)

в общем и если кому интересно: на magx bp можно обойти подпись.. развлекаюсь этим третий день, поменял imei на телефоне, до субсиди пока не добрался, был занят на работе..
идея - если кто решит следовать - такая, вырубаем подпись ап - это давно уже сделано, грузим свой бут, дальше - есть в исходниках что мото изволила нам подарить.. 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 г.

Вырвиглазное видео

openezx и кутопия на E2:

И раз: ютюб, и два: ютюб.

Основные вещи делают вид, что работают - дальше пока буду отлаживать и тестить.

среда, 12 августа 2009 г.

Звук, черт побери

Звук поломали хорошо. На AP пашет, а в режим звонка не переходит.
В коде микшера черти-что, при чем непонятно - или я не осилил, как его юзать, или его просто кое-кто недописал.
Надеюсь, что поправим и его наконец-то заберут в ваниллу - надоел уже.

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 г.

Магия линейного процессора

Кино и немцы: бутаем телефон, проходим хендшейк по gpio, девайс опознается на usb шине, как 0x3006 (драйвер ipc), на одном из интерфейсов которого есть ендпоинты для передачи и получения данных по ipc. Далее слипаю usb девайс (контроллер перестает посылать ему какие-то там периодические сообщения), bp это видит и со своей стороны тоже слипается, слипаю usb порт и ухожу в саспенд ap.

Врубаю обратно, 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 г.

Вроде живое

Не шейте на минг бп от E2. Ничего хорошего из этого не получилось - в бут попадаю только через тп.

За полтора года первый раз разбирал аппарат. Мерзость проведения тп в припаянных защитных кожухах на микросхемах (на картинке видны его контуры) - еле отцепил.

пятница, 31 июля 2009 г.

Внезапный тестпоинт?

Проводил опыты с саспендом usb хоста. Единственное, что понял - система там очень хлипкая, зависит от кучи рейскондишинов и последовательности включения/выключения usb хоста и просыпания/засыпания bp.

И еще словил вот такой замечательный фокус:


[ 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 г.

Как регистр назвали, то он и показывает

PEDR, defined in Table 3-20, indicates which GPIO pin (enabled through the PWER, PRER and
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.

Не верь глазам своим: магии не существует

Я все-таки нашел, почему BP не хотел идти спать.

Небольшая предыстория: в телефоне есть два проца 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 г.

Новости

В гите openezx традиционно все сломано. Первая вещь, которая перестала работать (тоже традиционно) - звук... шучу. Звук работает, но интерфейс микшера поменяли и кутопию надо патчить или лезть в alsamixer.

Что хуже - в ванильном ядре что-то такое опять сделали, что BP перестал работать вообще. При чем в самый интересный момент, когда я собрался с мыслями и сделал нормальный невелосипедный субдрайвер для usb-serial. Что там такое произошло - фиг его знает, но надо лезть и разбираться. Последний рабочий коммит - 0533a7bcf9a07863a145c6463985d561be76ef56.

Что еще хуже - даже до поломки BP все равно не хотел уходить в слип, так что я сейчас постепенно пробираюсь в его недра и буду его жестоко мучить, чтобы выяснить, почему именно он дает запрет.

Первые результаты этого вандализма - патч к boot_usb для чтения памяти (флеша) BP. Как оказалось, там все плохо: родной загрузчик проверяет подписи того что пишут (это патчится), того что запускают (это ломается на лету) и не дает возможности читать и писать произвольные адреса и объемы данных.

Читать он дает только флеш BP, да и то не весь (зону PDS не дает), а писать - только определенные кодовые группы, при чем целиком. Придется делать как на EZX и запускать из-под родного бута кастомный (олдскульных мотохакеров с мотофана), при чем запускать через дыру, чем я сейчас и занимаюсь.

понедельник, 22 июня 2009 г.

PCAP в ванильном ядре

Спешите видеть: linux/kernel/git/torvalds/linux-2.6.git/drivers/mfd/ezx-pcap.c.

Чтобы это еще кто-то юзал...

А я все не могу победить слип в этом самом 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

Начинаем тестирование сборки на ядре 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

Оказывается, вот этот фокус не работает на втором поколении. Пины нормального порта туда не подведены - только ноги 53 и 39 (usb).

Попробовал переключить EOC во второй режим UART (ноги 53 и 39 выводятся на usb порт) и "подрыгать" ногами - ничего со стороны хоста не увидел. Со стороны аппарата rx тоже все время 0. Драйвер сериал порта на gpio - тоже писать придется.

Попросил припаять к конвертеру диоды для индикации RX и TX - завтра попробую еще.

upd: все-таки туда можно сконфигурировать FFUART. утром попробую

воскресенье, 7 июня 2009 г.

В порядке эксперимента

Пока не знаю, нужен ли нам все-таки форум, но в прорядке экперимента, можно пользоваться этим: /ezx/ .
Модерация в том виде, в каком она есть не мф, отсутствует, движок аскетичный, но удобный и многим привычный.

Мотофан.jpg

Помним, любим, скорбим.




копирайты:
оригинальная картинка стянута с какой-то имижборды, локализовано паном Hartois

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 тоже в строю

заборол таки едро для е2. по словампроверявших все отлично работает. нужно теперь прикрутить в автобилды автовыбор defaultbuttons для разных моделей

воскресенье, 24 мая 2009 г.

Двухпроцессорная архитектура EZX

Как известно, в телефонах серии ezx - два CPU с разными операционными системами. Тот что ближе к пользователю и отвечает за красивый графический интерфейс на современной библиотеке qt2 embedded - Intel PXA270, работающий под управлением сами знаете чего. Тот что спрятан в недрах и ближе к GSM сети - огрызок старой платформы (всяких E398, L7 и др.) - Neptune LTE2.

Поскольку общей памяти они не имеют (в отличии от SCM-A на багиксе или MSM в HTC), то данными они обмениваются по самому обычному USB. В качестве хоста выступает AP (pxa270), в качестве устройства - BP (LTE2). Архитектурно это больше всего похоже на кпк (например ipaq), к которому по usb прицепили какой-нибудь E398.

В очень-очень старых моделях, которые никто никогда не видел и в руках не держал, вместо USB был RS232, который наверное любил терять данные по дороге. Что делают хорошие корпоративные программисты, когда железо глючит? Пишут костыли, куда они денутся. USB такого безобразия не допускает и сам следит за корректностью данных, но костыли конечно же оставили.

продолжение следует

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

собрал таки ядра для hainan и macau. функционал на уровне прежних сборок-тобиш ничего революционного, все просто работает как и должно

вторник, 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

В гите все сломано - очередной раз рефакторится PCAP, плюс к этому, парочка патчей, приплывших из апстрима сломали сначала gpio, потом звук, потом вообще весь pcap.

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

Контроль заряда я сделал, но из-за рефакторинга его сейчас не примут. Еще надо бы драйвер 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 г.

Билдхост вернулся

Новый адрес - 93.183.194.127, порт тот же (4222).

суббота, 25 апреля 2009 г.

Squares

Squares - игра для 2-4 человек. Ваша цель - обвести как можно больше квадратов линиями с четырех сторон. За один ход можно поставить одну линию.

 

Приложение является портированной на Qtopia 4.3 версией KSquares из KDE Source Repository.

среда, 15 апреля 2009 г.

Scribble+

Попользовался Scribble, захотелось его окультурить...

Итак, Scribble+ - маленькая программа для рисования. Только рисования.



Возможности:

  • выбор цвета в HSV пространстве, поддерживается прозрачность

  • рисование штрихами произвольной формы настраиваемой толщины

  • сохранение в любой из поддерживаемых форматов

вторник, 14 апреля 2009 г.

JumpingCube

JumpingCube - тактическая игра на захват территории для одного или двух человек. 

 

Приложение взято из KDE Source Repository.

четверг, 9 апреля 2009 г.

Языковые пакеты

В автобилд 200904100042 добавлены русский и украинский языковые пакеты. Я правда не проверял, что там получилось, но все должно быть хорошо.

Изменения в управлении питанием

В сборке 200904092216 200904092229 изменения в управлении питанием:

* убраны медленные режимы процессора (52 и 104) из APM
* вызов PMU поставлен на таймер, а не на черти-куда
* power_ic не открывается-закрывается туда-сюда
* кутопия считает usb-кабель зарядным устройством
* кутопия отображает состояние заряда батареи по текущему в цепях току, а не черти-чему
* значение датчика тока вынесено в VSO ( /Hardware/EZX/Current/Raw ), для любителей на него смотреть

упс.. забыл маленькую строчку

Камера

Поддержка камеры пошла в автобилды: 200904090954.
Снимать уже снимает, но кое-что еще поменять придется.

Кроме этого убрал один патч, который мог ломать выключение подсветки.

вторник, 31 марта 2009 г.

openezx-2.6.29

Неплохо. Очень хорошо, я бы сказал. Еще чуть-чуть (определение наушников/зарядки и управление зарядкой) и буду пользоваться.

И так, что работает (с поддержкой в кутопии)
* gsm (АТ mux)
* звук в обоих режимах (музыка и gsm)
* переключение звука уши-динамик-спикер
* сеть через usb
* карта
* контроль подсветки
* клавиатура, кроме красной кнопки, флипа и кнопки наушников
* тачскрин

Что не работает, но вроде бы должно:
* встроенный флеш
* контроль заряда
* gprs

Что не работает совсем или глючит:
* определение подключенных шнуров
* спящие режимы

среда, 18 марта 2009 г.

Управление железом на багиксе

Посмотрел API ядерных драйверов в багиксе.

Определение подключенных к кабелей такое же, как и ezx, управление зарядкой такое же, управление rtc такое же (но изменены префиксы ioctlc).

С подсветкой пока не разобрался - костыль на костыле, режимы usb не нашел вообще, роутинг звука вроде бы нашел, но не проверял.

Начал писать pdsd - вроде бы все просто и подводных камней нет.

Закрытый флип и входящий вызов

Сделал небольшой хак для входящего вызова. Кроме поднятия частоты процессора, во время входящего вызова, теперь прячется виджет флипа и можно увидеть, кто звонит.

Включено в автобилд 200903171449.

В автобилде 200903171534 включены конфиги из прошивки tmp_do и немного поломан виджет набора номера: картинки остались старые, а масштаб новый.

понедельник, 16 марта 2009 г.

Планы и перспективы портирования на Motomagx

Вчера забрал с почты новую игрушку: motorola v8. Долго приставал к Абрамке и yakk с вопросами и немного вошел в курс дела. Можно описать одним словом, но я это слово тут писать не буду. Если более длинно: работы много.

Если кто сюда зашел из просторов интернета и не совсем в курсе наших обозначений: под мотобагиксом понимается программно-апаратная платформа 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

Уже работает. Чтение и запись протестированы на четырехгигобайтной SDHC карте. Возможны проблемы со старыми картами, которые не понимают команду IF_COND - с этим пока не разбирался.

Патч на ядро: 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

Раз Нокия забрасывает кутопию, займемся ей сами. Нам очень не хватает браузера, правда? А Qtopia 4.4 жрет память. Все это привело к тому, что рождается монстр - Qtopia 4.3.4 + Qt/Embedded 4.5.0. Оно, вроде как, вполне уже пригодно к использованию, но, все-таки следует избавиться от мелких неприятных багов.Так что пока только скрины:

понедельник, 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]

Qwit - клиент для сети Twitter.

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

Собственно новость: http://www.qtsoftware.com/about/news/qt-software-discontinues-qt-extended

Что это означает для нас? По большому счету - ничего. Поддерживаем форк дальше и не обостряемся.

воскресенье, 1 марта 2009 г.

Cute Gomoku [port]

Cute Gomoku - игра Гомоку против компутера. Нужно составить ряд из 5 шариков раньше, чем это сделает ИИ. Игра отличается феноменально медленным расчетом ходов) Для более-менее терпимого времени хода ИИ пришлось уменьшить searchDepth с 3 до 1. Имеется сохранение/загрузка игры, отмена/повтор ходов.

 

Страница проекта на SF.net

Нездоровые фокусы с дескрипторами в gprsv

Есть у нас такой баг с gprs: если его включить, закрыть настройки и попробовать выключить - он не выключается.

Чтобы понять, откуда она берется и как ее чинить, нужно знать, как работает включение/выключение 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

Уже собирается все что нужно и даже работает, но пока есть три недостатка: карту нужно вручную прописать в fstab, нет mbtdload (проприетарщина ибо), а значит не работает блютуз, и нет iptables.

Первую проблему я собираюсь решить каким-нибудь хитрым скриптом, который будет смотреть, что там на карте за разделы и монтировать их куда нужно ( 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

mqutim - это (теперь уже) форк проекта qutIM, его целью является создание нативного мульти(двух)протокольного мессенджера для Qtopia 4.3.
  
На данный момент более-менее работает сам mqutim с плагином icq. Над плагином jabber также ведется работа. Необходимо убрать весь излишний для мобильного приложения функционал, избавиться от тормозов и исправить некотороые ошибки.
А вапще в реале мы поломали уже всё что смогли поломать и теперь пилить и пилить, ну и куча глюков думаю будет, особенно учитывая, то что форк у нас от нестабильной разрабатываемой версии. И да - говорят, что всё это жестоко тормозит, так что..

четверг, 19 февраля 2009 г.

Будильник

У будильника есть возможность задать свою мелодию вот так (Settings/Trolltech/RingTones.conf):


[Alarm]
file=/home/muromec/Documents/audio/Higurashi/01 - Main Theme - Hayashi.mp3


Всем кто будет ставить длинные файлы - обновитесь до 200902191641.

среда, 18 февраля 2009 г.

Изменения в автосборках

Теперь выкладываются еще и дельты (xdelta) между текущим и предыдущим файлами. Патч накладывать так: xdelta patch "файл патча" "старый файл" "новый файл". Патчи пожаты bzip2 - перед употреблением распаковать.

Плюс к этому генерируется md5sum для рапакованных и запакованных файлов.

Кому еще чего-то не хватает в автобилдах?

Новости 18.02

Билдхост вернулся и я поправил пару багов со звуком, gsm и питанием.

Звук: низкая громкость микрофона, возможное падение медиасервера из-за неинициализированного указателя (стыд мне).

Gsm: убрал старый хак для отбоя входящего вызова (теперь при отбое не дергается звук), не шлется лишне ATH и игнорируется один из индикаторов входящего вызова (тот в котором нет номера).

APM: при входящем вызове действительно повышается частота процессора до максимальной, то же самое происходит при открытии флипа.

Все эти радости в билде с меткой 200902181532.

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

Peg-E 1.0.0

[Бек]порт свеженькой игры Peg-E 1.0.0 от Graeme Gott.

Peg-E - это вариант пасьянса Ориентира, в котором Вам нужно перепрыгивать шашки, для того, чтобы убрать их с доски, в конечном счете, стараясь оставить лишь одну. Шашки можно перемещать по вертикали, горизонтали и диагонали. Доски создаются случайным образом, имеется 100 уровней сложности. Игра автоматически сохраняется, также присутствует возможность отмены/повторения ходов.

Официальный сайт

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

Прошивка из linux

Оказывается, старый баг с невозможностью писать дальше 32m флеша починили. Зато осталась такая маленьая прелесть:


/* this is enough for a 16MB flash with 128kB blocks */
#define NUM_FLASH_BLOCKS (128 * 3)


Вполне логично для первого поколения, где было три банки памяти по 16mb. На втором получалась ерунда - шилась только половина второй банки.

четверг, 12 февраля 2009 г.

OpenEmbedded root и прошивка из linux

Совершил еще одно маленькое чудо: OE собирает rootfs (тарбол и jffs2) полностью без моего вмешательства и этот рут можно сразу шить в железку, при чем опять же из линукса (сотни благодарностей проекту openezx).

Лежит там же: 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

Потихоньку мучаю OE. Задача минимум - собирать образ рутфс и пакеты ipk через bitbake с наименьшим количеством хаков и костылей.
Задача максимум - собираться через bitbake все вплоть до sbf и фида пакетов qpk.

Уже получилось сделать образ, в который можно, добавив libc вручную, чрутнуться и запускать софт из нескольких базовых пакетов.

Пытаться собирать им glibc из сорцов я наверное не буду - тут можно застрять надолго.

Поддержка DjVu

Eyepiece (0.2.0-alpha) обзавелся поддержкой DjVu. Один нюанс - наша кутопия ничего не знает про .djvu .djv файлы, поэтому в добавляем строчку "image/x.djvu djvu djv" в файл /opt/Qtopia/etc/mime.types. Да, нужна еще библиотека libdjvulibre. Вообще, наверно надо бы все эти библиотеки в пакеты .ipk запихать (PS: запихал).
Правда, набыдлокодено у меня там в дежавю... нада будет капитально переработать код... но пользовацо можно...

YWeather

YWether очередная поделка для Qtopia :). Пагоду берет с weather.yahoo.com, траф жмется потребляется гдето в районе 1кб за раз. С yahoo берем код города(или до ближайшего крупного города) для которого её охото знать хотябы примерно. Если код не меняем то наслаждаемся прогнозом погоды для чудеснейшего из городов... Монголии - Улан-Батор :).

З.Ы.: Настройки:

1) код города идем на Yahoo. Заходим в раздел Weather ищем свой город  (например http://weather.yahoo.com/Ivanovo-Russia/RSXX1366/forecast.html соответственно код RSXX1366)

2)выбрать температурную шкалу Цельсия/Фаренгейт. 

3) т.к. кривизну рук компенсирую переодическими правками,... свежий пакет обычно есть