воскресенье, 13 мая 2012 г.

Как я AT командами телефона шатал

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

Проблемы начались сразу же. Подключил телефон, а он - ноль эмоций, батарея такая древняя, что кажется уже разлагается. Меряю напряжение - 1.6В (батарея 3.6В), ладно, оставляю заряжаться, через минут 10 экран оживает и демонстрирует сиське индикатор заряда! Отлично!
Не так отлично, как если бы телефон умел работать без батареи от одного только дата-кабеля, но хотя бы так.

Включаю!

Старичок загрузился, ставлю дрова на кабель, появился новый ком-порт, расчехляю программу Terminal, коннекчусь, лихорадочно набираю AT<Enter> и, конечно, получаю отлуп (а иначе сказки-то и не было бы).. т.е. вообще ничего, тишина.

среда, 4 апреля 2012 г.

Как грабить видео с rutube из PHP

В отличие от YouTube, где видео грабится довольно просто, на RuTube используется rtmp.
И вот этот самый rtmp съел мне весь мозг, т.е. я вообще то знаю как грабить rtmp поток, но в этом случае все оказалось несколько сложнее.
Обычно для граббинга rtmp используется команда примерно такого вида (пример уже для ролика на rutube, может и не работать уже, ибо ссылки походу протухают)
rtmpdump -r rtmp://video-13-17.rutube.ru/rutube_vod_1 -W "http://rutube.ru/player.swf?file=http://bl.rutube.ru/79739a3e8ff8023db07dfe1f2d50edc6.iflv" -y "mp4:vol32/movies/79/73/79739a3e8ff8023db07dfe1f2d50edc6.mp4?e=1333442242&s=55c404be47f98c43d26df9a845ae8aca"  --timeout=4 -o out.mp4 [--resume]
возможные ошибки:
 - никаких &amp; в командной строке, только &
 - если выполнять из консоли linux, параметры, содержащие амперсанд (&) нужно взять в кавычки (как в примере выше)

гемор:
 - рутуб выдает с ограниченной скоростью, rtmpdump выкачивает с максимальной скоростью, и когда буфер достигает 1.5Мб (второй догоняет первого) - случается коллапс.. рассуждая так, я пробовал искуственно ограничить скорость выкачки, получилось примерно следующее
$cmd = 'rtmpdump -r rtmp://video-13-17.rutube.ru/rutube_vod_1 -W "http://rutube.ru/player.swf?file=http://bl.rutube.ru/79739a3e8ff8023db07dfe1f2d50edc6.iflv" -y "mp4:vol32/movies/79/73/79739a3e8ff8023db07dfe1f2d50edc6.mp4?e=1333442242&s=55c404be47f98c43d26df9a845ae8aca"  --timeout=4';
$size = 0;
if (!($fp = popen($cmd_tpl, 'r'))) {
    echo 'cant open cmd pipe' . "\n";
    die;
}
while ($bytes = fread($fp, 1024)) {
    usleep(50000); // try to grab in realtime 10sec video in real 10 seconds
    $size += strlen($bytes);
    echo '.' . $size;
    //fwrite($wf, $bytes); // запись в целевой файл, здесь не представлен
}
качалось медленно, чего и добивался, однако не помогло) при (долгой) закачке первых же 1.5Мб кэша - обрыв
пришлось пойти другим путем - использовать параметр --resume команды rtmpdump

exec($cmd_tpl, $out, $ret);
$cycles = 100; // защита от бесконечности
while ($ret !== 0 and $cycles-- > 0) {
    exec($cmd_tpl . ' --resume', $out, $ret);
}
if ($ret !== 0 and $cycles <= 0) {
    echo 'Failed to grab' . "\n";
    die;
}
echo 'Successfully grabbed ' . "\n";
в несколько подходов, довольно долго, но все же в итоге мы сохранили видео с rutube! на выходе - flv-видеофайл! Параметр timeout рекомендую поставить  от  2 до 4 сек
enjoy

upd: видимо у меня была несколько косячная версия rtmpdump (из репов), последняя 2.4 из git://git.ffmpeg.org/rtmpdump качает без разрывов

воскресенье, 25 марта 2012 г.

Прошивка телефона Samsung S8500 на bada 2.0 вручную

Сегодня наконец дошли руки проверить, не вышла ли уже наконец эта Bada 2.0. И я возрадовался - таки вышла! Однако как всегда, все оказалось не так радужно, как хотелось бы. Через Kies 2.2 обновление не происходило, т.е. после скачивания прошивки мне просто было сообщено, что обновление не удалось.. и кнопка "Подтвердить".. ну подтверждаю, хуле..

немного порывшись в инете, нашел инструкцию по прошивке. Саму прошивку на соответствующий телефон можно найти здесь http://badablog.ru/programmnoe-obespechenie-proshivki-dlya-smartfonov-samsung-wave/ , а инструкция как правильно все сделать - здесь http://badablog.ru/forum/viewtopic.php?f=38&t=1502

Поставил S8500XXKK5, по инструкции, все прошло нормально, разве что COM4 после запуска процесса показал ошибку, и обнаружился COM6, я выбрал его и попробовал запустить прошивку снова.. на этот раз все пошло-поехало.


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

upd: нашел другую, S8500XXLA1_S8500OXFLA2_SEB, с поддержкой русского. Скачать прошивку S8500XXLA1_S8500OXFLA2

суббота, 3 марта 2012 г.

запилил, наконец-таки, подсветку в сортире
видео тут http://www.youtube.com/watch?v=tvTCrlGoN6I

итого теперь с мобилки можно включить свет на кухне и подсветку в сортире! офигенно, скоро можно будет, не вставая с толчка, поставить чай

выполнение ssh команд из php без запроса пароля

когда возникает необходимость ssh взаимодействия между двумя машинами, создаются ключи доступа, например командами
ssh-keygen -t rsa
ssh-copy-id user@host
и все хорошо.. однако случись что с ключами, и exec('ssh ...') в php-скрипте затребует пароль, вероятно повесив скрипт надолго..

из ошибки
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
можно догадаться, что софтина перебрала все перечисленные способы и войти не удалось, последняя надежда - спросить пароль у юзера.. вот это и хотелось бы отключить
чтобы софтина не задавала глупых вопросов, можно заюзать опцию
-o PasswordAuthentication="no"
все вышеописанное специально для тех, кто не любит мануалы

суббота, 18 февраля 2012 г.

настройка /dev/ttyUSB0 в raw режим

как то однажды на переустановленном линухе мое устройство на ATTiny24 отказалось общаться с компом через конвертер USB-COM на базе микрухи FT232RL. Проверив в программе Terminal из под windows, я убедился, что само устройство в порядке, значит дело в настройке порта под никсами. Смотрим, что там на данный момент
stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

скорость подходящая, значит не хватает каких то опций. ответ искать пришлось недолго.

итак, настройка виртуального com-порта  под linux (обычно определяется как /dev/ttyUSB0) в raw-режим:
stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
UPD: кстати о настройке таймаута чтения из COM-порта
параметр min задает число байт, после которого таймаут активируется, параметр time задает таймаут с шагом 100мс.
Итого, чтобы задать таймаут 1.5сек без оглядки на число принятых байт, делаем так:
stty -F /dev/ttyUSB0 min 0 time 15