LINUX.ORG.RU

Сообщения a400k4a

 

Посоветуйте актуальный на 24 год USB модем для SMS

Задача - на сервере принять смс. Хочу для этого иметь модем, управляемый AT-командами. То есть RNDIS или встроенный WiFi не подойдут (сейчас, насколько я вижу, все, в основном, такие). Тут советуют 3372s, купил из доступного 3372h, думал перепрошить на s, перепробовал разные способы, описанные на 4pda, но ничего не получилось. Сдал назад. Видимо, с новой прошивкой старые способы смены версии не работают. Ну или недоковырял что-то, но не оч хочется этим заниматься, может, есть просто из коробки работающие в таком режиме?

 ,

a400k4a
()

Порядок загрузки драйверов

Не знаю даже как назвать эту тему. Есть маленькая эмбеддед система, в которую воткнут wifi модем. В процессе производства какой-то момент поменялся чипсет этого модема, и теперь запускается драйвер (carl9170), который хочет загрузить в модем свое firmware. Проблема в том, что на момент запуска драйвера файловая система не успевает смонтироваться, это происходит на одну секунду позже, и драйвер сообщает, что firmware загрузить не вышло. Драйвер вкомпилен в ядро, соответственно, для его запуска фс не нужна, предыдущий модем fw не требовал, и все работало.

Вопрос, что вообще определяет порядок запуска драйверов в ядре и как ему намекнуть, что надо бы подождать пару сек?

Очевидное решение - пересобрать с драйвером, вынесенным в виде модуля, но не оч хочется вообще пересобирать данное ядро, потому система, как я сказал уже, встроенная, и в данном случае это тянет пересборку еще драйвера взаимодействия с DSP и т.д.

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

rootwait в параметерах ядра, как я понимаю, тут не при делах, т.к. это значит подождать, пока смонтируется фс, а не падать сразу с ошибкой. В любом случае, rootwait и так задан в параметрах.

 , ,

a400k4a
()

Посоветуйте WiFi модем

С нормально работающим монитором и инжекцией в формфакторе M2. Из актуальных на текущий момент или не очень старых. Наверно, лучше atheros, но не ath10k, т.к. поддержки инжекции нет. В идеале еще поддержку 5/10 МГц бы..

 ,

a400k4a
()

ath10k 5/10MHz

Есть модуль на QCA9377, надо режим monitor и поддержку 5/10 МГц, оно же quarter/half rate. Монитор, как выяснил, поддерживают не все firmware. Ну ок, подобрал нужное. С 5/10 МГц сложнее. Драйвер пропатчил, как предлагается вот тут. Выставить полосу драйвер дает, но в реальности не работает, полоса не меняется. Проверяю, слушая ubiquiti, который умеет 5/10 МГц. Думаю, что дело в firmware, решил поискать подходящее, поискал тут и тут, собрал такую коллекцию:

firmware-5.bin_CNSS.TF.1.0-00267-QCATFSWPZ-1    Monitor+ BW-
firmware-5.bin_WLAN.TF.1.0-00002-QCATFSWPZ-5    Monitor-
firmware-5.bin_WLAN.TF.1.0-00023-QCATFSWPZ-1    Monitor-
firmware-5.bin_WLAN.TF.1.0-00267-1              Monitor+ BW-
firmware-6.bin_WLAN.TF.2.1-00014-QCARMSWP-1     Monitor-
firmware-6.bin_WLAN.TF.2.1-00016-QCARMSWP-1     Monitor-
firmware-6.bin_WLAN.TF.2.1-00021-QCARMSWP-1     Monitor-

В результате монитор работает только на двух, а 5/10 так и не получил. Может, проблема не в firmware? Почему думаю, что должно как-то работать - нашел статью, где упоминается возможность и как раз этот чипсет, но там без подробностей..

 ,

a400k4a
()

GTK настроить стиль меню

Есть такой интерфейс: https://wdho.ru/7l44 Залил так, потому что не знаю, как вставить картинку (видимо, никак). Вопрос! Как сделать выделенный пункт меню читаемым, т.е. сменить цвет с белого на нормальный? Вот gtkrc: https://wdho.ru/7l48 Пытался его ковырять, но безуспешно

 

a400k4a
()

Собрать проект под старую Ubuntu

Есть сервер, который работает на Ubuntu 16.04, понадобилось мне обновить на нем старый проект. У меня Ubuntu 20.04. Стал я проект пересобирать, а версии библиотек не совпадают.

Попробовал скопировать на старую систему новые либы, потянулись бесконечные зависимости, я это дело бросил. Вторая мысль: собрать на новой системе статически. Опять погряз в зависимостях, как-то собрал, но в итоге уперся в разные версии libc.

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

 

a400k4a
()

Прилетает SIGABRT

Есть некий софт, он вполне себе нормально работает, но иногда ему прилетает SIGABRT. Прилетает редко, примерно раз в месяц. Надо это отловить. Повесил обработчик на SIGSEGV и SIGABRT, в обработчике запускаю backtrace, даже собрал альтернативу утилите addr2line, так что при падении в лог пишется не просто текущий стек с адресами, а полностью вижу имя функции и строку, где произошло падение. Проверяю разными способами: посылка сигнала, повторный вызов free(), обращение по нулевому адресу, вызов abort(), бесконечная рекурсия. Везде приходит соответствующий сигнал, программа падает, в логе все выдается как надо.

Однако. Когда прилетает реальный аборт, эта схема почему-то не работает. Вижу в логе, что обработчик аборта вызывает backtrace, backtrace не проходит, прилетает сегфолт, обработчик сегфолт тоже пытается вызвать backtrace, и на этом все.

Добавил при запуске вызов sigaltstack, который выделяет отдельный стек для обработчика сигналов на случай порчи основного. Не помогло.

Почему на реальном SIGABRT backtrace падает, хотя на тестовых ошибках падение вполне нормально отлавливается? Как еще может прийти аборт, если я в софте не юзаю ни abort(), ни assert()? Еще вариант - вызов abort() из какой-то либы, но почему-то не получить backtrace..

 

a400k4a
()

mysql: 1500 раз INSERT и segfault!

Делаю mysql_query() в цикле, надо вставить несколько тысяч строк. Где-то после 1500 запроса - падение. Запрос простейший - INSERT в таблицу из Id и Int. Закомментировал mysql_query() - все норм. Если делать 1, 10, 100 запросов - тоже норм. Если делать ничего не значащие запросы типа SET CHARSET … - работает. То есть падает именно когда много раз вызовешь mysql_query(INSERT…).

dmesg:

segfault at f365be85 ip 00000000f71a592e sp 00000000f63abd7c error 4 in libc-2.23.so[f712f000+1b0000]

libmysqlclient18. Все вызовы защищены мьютексами, да и работает пока только один поток. Это баг в либе, или что тут не так?

 ,

a400k4a
()

Как пробросить трафик между двумя интерфейсами через свой фильтр?

Есть два физических интерфейса, например, eth0 и eth1. Юзер подключается к eth0, я ему раздаю ip, включаю маскарадинг на eth1, и он из-под NAT выходит в инет через этот eth1. Тут вопросов нет.

Я хочу этот трафик обрабатывать, протаскивать все пакеты через свой процесс и иногда кое-что в этих пакетах менять. Как это сделать? Попробовал сделать так: написал софтину, которая поднимает два tap интерфейса, tap0 и tap1, внутри пока что просто читаю из tap0 и пишу в tap1 и наоборот (дальше надо будет разбирать и модифицировать). Мне надо заставить пакеты ходить так: eth0 - (tap0 - tap1) - eth1.

Сделал:

ifconfig tap0 192.168.100.1
ifconfig tap1 192.168.200.1
ip route add <адрес внешнего сервера> via 192.168.100.1
iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE

Теперь пакеты идут через мой tap0, но во внешнюю сеть они не уходят. Точнее, идут только ARP запросы, ответов нет, на этом все заканчивается. Как мне заставить пакеты идти с tap1 в eth1?

Может быть, есть более адекватный способ эту задачу решить, но еще раз, внимание! Мне надо не просто пробросить трафик, а иметь возможность делать некую произвольную модификацию пакетов, т.е. только лишь средствами iptables тут не обойтись. Или обойтись? В iptables не силен..

 ,

a400k4a
()

RSS подписка на новые темы