Всем привет !
С наступившим !
Насчет "мани бак", я конечно пошутил, а вот на счет "али как", хотел бы привлечь ваше
внимание, в особенности службы поддержки !
Итак, все началось летом, жена поставила задачу - обеспечить видео наблюдение дома,
дабы контролировать чем няня с ребенком занимается в наше отсутствие. Покупать
готовые системы не хотелось, т.к. они в основном кабельные, сверлить дыры в стенах
свежесделанного ремонта тем более. Вот тут то я подумал про wifi, тем более что супер
качества нам не надо было. Остановился на 933L, видео приемлимое, звук пишет, в онлайне
посмотреть можно, купил 4 штуки. И все бы ничего, пока не настала осень и не появилась
новая прошивка, на тот момент - 1.01b07, сразу меня эта буква "b" засмущала, уж не бета ли
,
и не зря, как оказалось. После влития сего фирмваря в одну из камер, стали с ней происходить
страшные глюки, сейчас расскажу подробнее ...
Как я говорил, в моей конфигурации все камеры работают через wifi на точку доступа "N" стандарта,
на всех камерах адреса статические, качество сигнала приемлимое (хотя, сами понимаете, что может
меняться в панельном муравейнике, где AP есть в каждой квартире), сброс видео происходит на FTP
по детекртору движения и звука, параметры видео приводить не буду, они не важны, почему, поймете позже.
А теперь о страшном глюке - камера стала сбрасывать косячные авишники на ftp (не сразу, минут через
10 работы). Внимательное изучение сих видео фрагментов показало очень интересную особенность, а именно,
если посмотреть в нормальный AVI файл камеры, то в самом начале увидим сигнатуру: RIFF, в битых файлах в начале
эта сигнатура отсутствует, НО, она встречается в середине файла! Теперь внимание, берем 2 таких файла,
назовем их текущий и предыдущий, ищем в предыдущем сигнатуру, отрезаем в файле первую половину до сигнатуры,
берем текущий файл, отрезаем вторую половину (вместе с сигнатурой), а теперь склеиваем предыдущий и текущий
файлы, и что вы думаете ..., правильно, получился нормальный AVI !
Складывается впечатление, что съехала крыша у какого-то кольцевого буфера в камере. Что ж явилось причиной
такой ошибки ща расскажу и покажу
К стати, если есть желающие повторить мои эксперименты, милости просим,
т.к., чем нас больше, тем быстрее ошибку исправят, я встречал на нескольких форумах посты с подобными проблемами,
но с другими моделями камер.
И вот наступили праздники, заняться чем то надо, не пить же неделю, вспомнил про проблему прошивки,
решил копнуть поглубже, как говорил мой школьный физик - давай будем думать. Ранее я говорил,
все камеры работают через wifi, у большинства обладателей сих изделий подключение проводное,
и таких проблем не наблюдается, напрашивается вывод - виноват wifi интерфейс. Но, если хорошо подумать,
то приходим к выводу, что этот самый "кольцевой буфер" обслуживает приложение, которое пишет в сокет (при
трансфере на ftp), и ему фиолетово, как дальше будут передаваться данные, хоть азбукой морзе через
телеграфиста. А теперь давайте подумаем, чем wifi оличается от ethernet, в основном 2-мя вещами,
первое - может перерегистрироватся, если сигнал ниже плинтуса упал,
второе - задержки (сосед решил порнушку посмотреть)
А теперь давайте перенесем эти условия на Eth !
Отключаем в камере wifi, втыкаем медный хвост, пляшем перед камерой, чтоб детектор движения сработал,
смотрим в каталог ftp файлы приходят, все в порядке.
Иммитируем первый случай. Что такое перерегистрация wifi - это фактически down/up интерфейса. Выдергиваем
хвост из камеры, пляшем, втыкаем назад, смотрим в каталог ftp - файлы приходят, все в порядке (за исключением
тех фрагментов, которые камера не скинула по причине отсутствия сети). Ммда, пятой точкой чую что то тут не так,
а именно, в момент обрыва eth не было активных tcp сессий на ftp сервер, так не интересно, но как же их
поймать, файлы то быстро сбрасываются ...,правильно, надо зарезать полосу на ftp data. Благо у меня ftp на линуксе
там полосу нарезать как 2 пальца об асфальт, самое простое решение:
iptables -A INPUT -p tcp -s 192.168.8.61/32 --dport 20 -m limit --limit 50/second --limit-burst 200 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.8.61/32 --dport 20 -j DROP
192.168.8.61 - адрес камеры. Такая конструкция дает примерно 70-80 Кб/c, это 15-20 секунд продолжительность сессии,
чего вполне достаточно.
Запускаем команды, пляшем перед камерой, смотрим как медленно растер размер файла в ftp каталоге, выдергиваем
хвост из камеры (в момент активной сессии, естественно), считаем 1,2,3,4,5, вышел зайчик погулять,
вставляем хвост в камеру, в ftp видим недокачанный файл с нормальным заголовком, размер которого уже не изменится,
снова заставляем работать детектор движения, дабы пошел новый сброс, и, ОППА !!! А файлы то битые передаются
И так будет до конца жизни камеры, пока ребут ее не настигнет.
А вот еще фокус, не будем вообще трогать хвост камеры, рассмотрим второе отличие wifi от eth - задержка.
Ребутим камеру. Считаем что полоса у нас уже нарезается (2 команды выше), пляшем перед камерой,
смотрим в фтп каталог, трансфер начался, а теперь - ловкость рук, даем такую команду:
iptables -I INPUT -p tcp -s 192.168.8.61/32 --dport 20 -j DROP;sleep 5; iptables -D INPUT 1
Т.е., фактически создаем 5-ти секундный таймаут. А результат такой же как в первом случае - крышу снесло.
А можно еще вот так, результат будет тот же, но за более короткое время:
iptables -I INPUT -p tcp -s 192.168.8.61/32 --dport 20 -j REJECT;sleep 1; iptables -D INPUT 1
Ухх, устал писать, а вы, наверное читать, так что к перейдем выводам,
а они такие - в глюках камеры интерфейсы не виноваты, виноват тот программный модуль,
у которого при обрыве активной TCP сессии (принудительной или по таймауту - не имеет значения)
в момент передачи файла сносит крышу.
И последнее, свежий фирмварь - 1.02b05 страдает точно такой же болезнью,
а вот самый первый - 1.00b14, как я не мучал, ведет себя стабильно, к стати,
отличия в процедуре сброса файлов явно произошли, т.к. в 1.00b14 камера не регулировала скорость передачи,
насколько канал позволяет, настолько и разгоняла, а вот начиная с 1.01b07, скорость не превышает 1Мбайт/c,
для wifi это даже хорошо.
По моему все разжевал, даже ламер поймет, неговоря о девелоперах фирмваря.
Так что, поддержка, исправим косяк, али как ? А то ведь мани бак