|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Леонид Каганов/Записи в блоге |
|
Леонид Каганов
Голосов: 2 Адрес блога: http://lleo.livejournal.com/ Добавлен: 2007-12-13 21:28:18 блограйдером Luber |
|
Кривые костыли для wlan0 Banana BPI-R1
2016-06-05 19:28:15 (читать в оригинале)это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/06/04.html
Скучный пост для айтишников, сразу предупреждаю. Пару месяцев назад я рассказывал, что в качестве роутера у меня работает системная платка Banana BPI-R1, и только глючок у нее с WiFi - иногда виснет. К сожалению, колдовство и компиляция драйверов не помогли - вайфай как вис, так и виснет, иногда раз в сутки, иногда раз в несколько дней.

Питание платы было заменено на прекрасное - по питанию нареканий нет. Возможно, портят дело какие-то другие устройства на USB-шинах, у меня их, увы, много висит. Почему-то контроллер WiFi интегрирован на плате, но видится как USB-устройство. Контроллер называется 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter. В интернете встречаются упоминания о плохой работе RTL8192CU с hostapd, но я пока не нашел эффективного средства, кроме как перегрузить сервер.
Потом по совету Кирилла я стал просто делать такие махинации:
/sbin/ifconfig wlan0 down
/sbin/ifconfig wlan0 up
/usr/sbin/service hostapd restart
Этого оказалось достаточно, чтобы снова поднять WiFi без полной перезагрузки. Поизучав логи, я понял, что во-первых, ничего в логах не смыслю. Во-вторых, когда WiFi зависает, а устройства (мобильник, например) пытается раз за разом соединиться, чтобы получить адрес, в /var/log/daemon.log сыплются такие строки:
May 29 12:29:46 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: associated
May 29 12:29:50 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: disassociated
May 29 12:29:51 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: associated
May 29 12:29:55 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: disassociated
May 29 12:29:56 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: associated
May 29 12:30:00 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: disassociated
May 29 12:30:01 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: associated
May 29 12:30:05 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: disassociated
May 29 12:30:06 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: associated
May 29 12:30:11 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: disassociated
May 29 12:30:11 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: associated
May 29 12:30:15 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: disassociated
May 29 12:30:17 banana hostapd: wlan0: STA 3c:40:8e:75:b9:c3 IEEE 802.11: associated
Поскольку зависания сетки задолбали всех (меня, домочадцев, гостей дома, а также погодную станцию, висящую за окном), а решения проблемы не видно, то я принял решение построить костыли и просто выполнять перезапуск wlan0 при появлении в логе признаков зависания. К сожалению, shell-скрипты на основе tail -f | grep -q мне соорудить не удалось в силу нетривиальности задачи. Поэтому пришлось взять ненавистный мною язык C и написать демон-костыль. Выкладываю, может кому-то пригодится. Запускается от рута при старте системы:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>#define BUFLEN 2048
#define REREAD 50
#define REREADC 5000void LLOG(char* s) { printf("%s\n",s); }
int main(int argc, char* argv[]) {
int i,kel=0,cn=-1,cn2=-1;
char openflag=0, *result, *msg = malloc (BUFLEN+1);
const char *str1="IEEE 802.11: associated";
const char *str2="IEEE 802.11: disassociated";
const char *logfile="/var/log/daemon.log";
const time_t timer = time(NULL); sprintf(msg,"+++ Start: %s",ctime(&timer)); LLOG(msg);
FILE *fp;while(1) {
if(cn<0||cn2<0) { LLOG("+++ Reload");
if(openflag) { fclose(fp); openflag=0; LLOG("+++ Close file"); }
if((fp=fopen(logfile,"r"))==NULL) { sprintf(msg,"+++ %s+++ error open: %s",ctime(&timer),logfile); LLOG(msg); sleep(2); continue; } // открыть не удалось
openflag=1; // открыть удалось
fseek(fp,0L,SEEK_END); // в конец файла
cn=REREAD; cn2=REREADC;
}
cn2--;
if(!openflag || NULL==fgets(msg,BUFLEN,fp)) { sleep(1); continue; } // прочесть не удалось - и ладно
LLOG(msg); // что прочли
cn--;for(i=0;i<BUFLEN;i++) { if(!msg[i] ||msg[i]==0x0d||msg[i]==0x0a) break; printf("%c",msg[i]); } printf("\n");
if(NULL!=strstr(msg,str1)) { kel=1; continue; } // найдена первая строка
if(NULL!=strstr(msg,str2)) { if(kel==1) { LLOG("*** CATCH ***");system("/sbin/ifconfig wlan0 down"); sleep(1); // опустить wlan0
system("/sbin/ifconfig wlan0 up"); sleep(1); // поднять wlan0
system("/usr/sbin/service hostapd restart"); // перестартовать hostapd
system("mpg123 /home/audio/samples/jitie-moe.mp3"); // ну и сыграть звук в колонки} kel=2; cn=-1; }
else kel=0;
}
}
Второй день зависаний нет. Один раз тихо вздохнуло в коридоре "Житие-мое" (сэмпл из "Иван Васильевич меняет професссию") - значит, отработало. В остальном Banana BPI-R1 показала прекрасные результаты, поскольку основная работа сего квартирного сервера (помимо чисто серверных и архивных задач) - быть шлюзом и хабом на 5 портов Ethernet. Это лучший сервер, что был у меня - надежный, компактный, малопотребляющий и абсолютно бесшумный. В ближайших планах - привесить к нему двухстрочный дисплей и кучу электроники к GPIO.
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/06/04.html
Праздные вопросы
2016-06-04 08:12:23 (читать в оригинале)это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/06/03.html
О чем вы думаете в столь этот ранний субботний час? Вот я думаю о физике. Давайте подумаем вместе?

1. Колобку, чтобы катиться, нужно смещать центр тяжести внутри своего тела. Какой объем Колобка должен составлять воздушный пузырь и какой — непропекшееся жидкое тесто, чтобы Колобок смог комфортно кататься со скоростью, показанной в мультиках?2. Известно, что допустимые перегрузки для нетренированного человека (не космонавта) 3G. Какой длины должен быть ствол пушки (или резинка рогатки), чтобы разогнать капсулу с человеком до скорости самолета 900км/час?
3. Во сколько раз медленнее автомобиля должен разгоняться Ковер-Самолет, чтобы сидящие на нем пассажиры не свалились за борт от ускорения (учитывая, что держаться на ковре не за что)?
4. Масса Икара вместе с крыльями из современных материалов 100 кг. Сколько метров в размахе должны быть крылья? Во сколько раз Икару придется усилить свои руки, чтобы летать, махая крыльями?
5. Во сколько раз надо усилить магнит медицинского томографа (и какого будет размера эта установка), чтобы притягивать с расстояния хотя бы 5 метров металлические предметы — Терминатора, ноутбук Пинкмана, кота Тома, проглотившего утюг? Какого размера для этой цели должен быть магнит неодимовый?
6. С какой частотой мыши должны раскачивать антенну на крыше кота Леопольда, чтобы на экране его телевизора появились заметные помехи?
7. Какие диоптрии очков для близорукости (и какой толщины будут их стекла?) должна Колдунья выписать Русалочке, чтобы та, помимо голоса, не потеряла еще и зрение, попав из воды на сушу?
На некоторые из этих вопросов я уже нашел ответы, на некоторые пока ищу. Но не скажу — будет интереснее читать комменты!
Кстати, а вас когда-нибудь удивляли какие-то нестыковки в мультфильмах по физике, химии, оптике? Какие мультфильмы вы бы хотели исправить в соответствии с точными науками?
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/06/03.html
1 июня
2016-06-02 02:07:35 (читать в оригинале)это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/06/01.html

Икона называется: «Мадонна в Фейсбуке скорбящая». Это я побывал сегодня в Царицыно у Дуба, где бываю 1 июня уже 20 лет подряд. Повидал друзей, пофоткал веселых людей. Лето, товарищи, предлагаю считать открытым!

это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/06/01.html
Покрышки
2016-05-31 22:03:50 (читать в оригинале)это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/05/31_pokryshki.html
Всю ночь не спал. Проснулся рано. Прочистил нос, а пахнет снова. Тот долго рассуждал о вони Этот текст написан для проекта beseder.ru, где я веду авторскую колонку. Вообще для beseder.ru я написал немало подобных материалов, вот их полный список |
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/05/31_pokryshki.html
Афон
2016-05-29 17:47:39 (читать в оригинале)это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/05/29.html
для beseder.ru
И как я вам на этом фоне? — |
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/05/29.html
|
| ||
|
+40 |
47 |
Фрагменты |
|
+30 |
57 |
тот_самый_Петрович |
|
+19 |
40 |
история интерьера |
|
+1 |
27 |
Новости сайта RocketsMusic.ru |
|
+1 |
17 |
промо радио |
|
| ||
|
-17 |
20 |
Радио ФМ Онлайн слушать бесплатно |
|
-24 |
2 |
Лучинин.net |
|
|
|
|
|
|
|
|
|
|
|
|
Загрузка...
взяты из открытых общедоступных источников и являются собственностью их авторов.

