LINUX.ORG.RU

Сообщения kvpfs_2

 

Интерфейс камеры

Форум — Linux-hardware

Привет. Нужен примерный план для дальнейшего движения. Пока толком вообще ничего не гуглил. Предположим, что хочу брать картинку с Х камер, передавать её на какой-нибудь одноплатник, который будет производить запись.

Главный вопрос вот в чём - по какому интерфейску камере лучше передавать данные? Ethernet? Подозреваю, что это сложный и дорогой девайс. Может взять кучу дешевых аналоговых камер, который подключены в какой-то мультиплексор -> оцифровка? Ну пусть это даже не аналоговая камера, а имеет какой-то цифровой интерфейс на выходе, все равно кучу камер подключаем к мультиплексору, а дальше одноплатник с этим разбирается.

 

kvpfs_2
()

Интернет через ОПСОСА

Форум — Mobile

Привет. Интернет через ОПСОСА на телефоне - скорость высокая, телефон раздает вайфай - скорость высокая, сим карта вставляется в роутер с модемом - скорость падает в несколько раз (несколько роутеров, результат один).

Вопрос - как это работает, как оператор определяет тип устройства? Была гипотеза про IMEI, но она не подтвердилась. Роутер регистрируясь в сети оператора отсылает некую инфу? Можно ли эту инфу подменить? Какие-то там ключевые слова чтобы погуглить не помешали бы

PS: TTL - тоже крутилось

 , , ,

kvpfs_2
()

amneziawg на роутере с openwrt

Форум — General

Приветствую. Более года юзаю настроенный amneziawg шлюз на домашнем пк (linux, естественно, с установленным модулем ядра), все остальные девайсы в локальной сети используюет его как шлюз интернета (настроил dhcp сервер выдавать адрес данного пк как gate). За год никогда не было никаких проблем, всё как часы.

Но на днях решил помочь товарищу - настроить и передать ему роутер, который будет сам amneziawg шлюзом, а не другой хост в локальной сети. У меня два роутера - один routerich с их модифицированной openwrt, второй - другой производитель прошитый чистой openwrt. Настроил по этой инструкции. Некоторое количество часов все работает норм, но далее amneziawg шлюз на роутерах умирает и инет отваливается. Помогает reset и новая настройка.

На десктопе я бы, наверное, в этом разобрался, но на роутере всё обмазано гуем, который черт знает куда кладет свои конфиги и как в точности работает. А netfilter на роутере - вообще сказка, я однажды дампнул правила и пытался разобраться, не вышло).

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

PS: когда захожу на роутер через ssh и делаю ping {сервер_в_европе_ip} - он успешно пингуется, ping 1.1.1.1 - нет

 , , , ,

kvpfs_2
()

redirect после auth

Форум — Web-development

Привет, есть такой конфиг nginx:

events {
}

http {
        limit_req_zone $binary_remote_addr zone=one:10m rate=15r/m;
        server {
                location / {
                        limit_req zone=one burst=40;
                        auth_basic           "closed site";
                        auth_basic_user_file /data/www/conf/htpasswd;
                        return 302 https://www.youtube.com/;
                }
        }
}

Идея была в том, что юзер должен ввести логин/пароль, и если все верно, то перенаправляется по нужному адресу, иначе долбится дальше в логин/пароль. Без return все работает (запрос пароля), но стоит добавить return, как он выполняется безусловно, auth не выполняется. Что здесь не так?

ПС: такой способ перенаправить посоветовал гпт

 

kvpfs_2
()

Шпионская камера

Форум — Talks

Привет. Заказал китайскую камеру, маленькая матрица и широкоугольный объектив похожий на пуговицу от одежды, собственно в таком качестве я и хотел её заюзать. От матрицы шлейф на плату с МК. Всё бы ничего, но эта дрянь пишет на карту памяти только если у неё есть коннект с wifi сетью, а у сети должен быть рабочий шлюз в инет, иначе запись на карту не происходит. Уж не знаю почему так странно, может чтобы теткам под юбки не смотрели, хотя если очень надо, то можно и рюкзак с роутером + питание + модем.

Но это все костыли кривые. Хочу нормально. Проблема в том, что как-то не выходит загуглить продающуюся маленькую матрицу с объективом опять же маленьким.

Может кто-нибудь встречал подобные матрицы и подскажет где? Я рассчитываю, что там в ней сбоку какой-нибудь мультиплексор, и чтение пикселей происходит последовательно, а не 100500 контактов, которые отвечают за каждый пиксель.

Или вот ещё вариант - реально ли достать матрицу с линзой из телефона, и посадить это хозяйство на длинный шлейф? Телефон в карман, а матрицу вместо пуговицы.

И ещё интересно, допустим, что я найду маленькую матрицу (не от телефона), не является проблемой прогонять кадры через какой-нибудь кодек? Ну т.е. есть и доступны реализации под MCU.

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

 , , ,

kvpfs_2
()

Где спрятать цифры

Форум — Talks

Всех приветствую. Широкими мазками - есть игра (в реале), участники должны получить некоторое количество цифр (например - x, y, z) и применить их где-то (опущу детали о применении, вопрос о другом). Спрятать эти x, y, z нужно как-то интересно и нетривиально, чтобы их запись/считывание не было делом обыденным, это должно вызывать какую-то эмоцию или околокринжовое состояние. Например:

  • запись на крышке бачка унитаза в каком-нибудь заведении
  • часть номера телефона у какой-то конкретной продавщицы/продавца
  • запись в книге отзывов в магазине

Плиз, накидайте идей. Только без всякого экстрима вроде табличка на вершине Эвереста

 

kvpfs_2
()

Ядро не может найти сжатую прошивку для GPU

Форум — Admin

Привет. Собираю своё linux ядро, мне не делать нечего, а иначе никак - на свежих ядрах начала зависать система, какие-то GPU related косяки, решил откатиться.

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

[    0.591319] [drm] Loading kaveri Microcode
[    0.591341] radeon 0000:00:01.0: Direct firmware load for radeon/kaveri_pfp.bin failed with error -2
[    0.591359] radeon 0000:00:01.0: Direct firmware load for radeon/KAVERI_pfp.bin failed with error -2
[    0.591366] [drm:cik_init] *ERROR* Failed to load firmware!
[    0.591376] radeon 0000:00:01.0: Fatal error during GPU init
[    0.591379] [drm] radeon: finishing device.

Искомая прошивка существует в виде:

/usr/lib/firmware/amdgpu/kaveri_pfp.bin.zst

В ядре я включил это:

CONFIG_FW_LOADER_COMPRESS: 

This option enables the support for loading compressed firmware files. ...

Но прошивка всё равно не находится. Где крутить?

Перемещено hobbit из general

 

kvpfs_2
()

Non-monotonic DTS

Форум — Multimedia

Здравствуйте. Готовлю небольшой фильм, когда сцен стало слишком много и ждать сборки всего за раз стало долго, решил сделать инкрементальную сборку сцен на основе Makefile’а. Во всех исходниках сцен png фреймы, фпс везде == 30

define scenes_nl
scene_90
scene_91
scene_92
...
endef

c_options := -movflags +faststart
v_options := -c:v libx264 -crf 18 -preset veryfast -pix_fmt yuv420p
a_options := -c:a aac -b:a 128k



define NL


endef
scenes := $(subst ${NL}, ,${scenes_nl})
parts = $(addsuffix .mp4, $(addprefix parts/,${scenes}))

output.mp4 : ${parts} global_audio/audio.m4a
	if [[ -e list_tmp.txt ]]; then rm list_tmp.txt; fi
	for f in ${parts}; do echo "file '$${f}'" >> list_tmp.txt; done
	ffmpeg -f concat -i list_tmp.txt -c copy ${c_options} output_inter.mp4
	ffmpeg -y -i output_inter.mp4 -i global_audio/audio.m4a -filter_complex "[0:1][1:0]amix[ma]"\
		-map 0:0 -map "[ma]" -c:v copy -shortest ${a_options} ${c_options} $@
	rm output_inter.mp4

parts/%.mp4 : %
	if ! [[ -e $?/audio.m4a ]]; then cp -i empty.m4a $?/audio.m4a; fi
	ffmpeg -y -framerate 30 -i $?/%04d.png -i $?/audio.m4a -map 0:0 -map 1:0 -shortest ${c_options} ${v_options} ${a_options} $@

clean:
	#-for s in ${scenes}; do rm $${s}/audio.m4a; done
	-rm parts/*
	-rm list_tmp.txt

touch:
	-for s in ${scenes}; do touch $${s}; done

Суть элементарная - сперва клепаю mp4 из каждой сцены (ffmpeg -y -framerate 30 -i $?/%04d.png -i $?/audio.m4a -map 0:0 -map 1:0 ${ffmpeg_options} $@), затем сливаю всё в один контейнер без перекодировки (ffmpeg -y -f concat -i list_tmp.txt -c copy $@).

Но появилась проблема - в выхлопе на втором шаге появились сообщения «Non-monotonic DTS; previous: 3803896, current: 3803875; changing to 3803897. This may result in incorrect timestamps in the output file» + если фпс в начале был 30, то у выходного файла он в районе 29.64. Что происходит? Как получить желаемое? Может на первом шаге mp4 неподходящий контейнер?

Заметил, что если аудио поток не шить в видики на первом шаге, то фпс у видика на вотором шаге == ожидаемым 30, но сообщения о DTS это не устраняет

 , , ,

kvpfs_2
()

Сцена с приближающимся грузовиком

Форум — Talks

Кто-нибудь может вспомнить фильм, в котором имеется сцена буд-то бы на камеру наезжает грузовик? Т.е. она на него смотрит (на высоте глаз), он мчится к ней и сбивает её.

 

kvpfs_2
()

Моделирование стекания жидкости по цилиндру

Форум — Multimedia

Привет. Застрял на какой-то полнейшей глупости, на ровном месте. Хотел смоделировать блендерным liquid симулятором следующее: на земле лежит цилиндр (не на основании), сверху на него льётся жидкость, мне надо было получить правдоподобную картину процесса. Но не тут то было, жидкость по цилиндру не хочет стекать естественным образом, пробовал разное, и силовыми полями пытался направить поток, тщетно. В итоге думаю: "сделаю поясок на цилиндре и сделаем в этом месте сужение. Получилось так. Что за бабочка? Так жидкость не стекает с цилиндра. Resolution == 120.

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

 ,

kvpfs_2
()

Ткань фарадея

Форум — Talks

Привет, кто-нибудь имел дело с такой тканью? Состав медь, никель и какие-то полимеры. Интересует её электропроводность, без всяких такм втыканий погублже, а легкое касание щупом. Также как у этой ткани дела с растяжимостью?

 

kvpfs_2
()

Разогнуть кадры

Форум — Multimedia

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

Поясню что имею в виду под изменением размеров: устанавливаем камеру на штатив, смотрим на какой-то статичный объект, вращаем камеру вокруг оси Z, в разных участках матрицы размер объект будет различен.

Поразмыслив ещё немного я пришел к выводу, что дело всё в том, что на края матрицы влезает меньше изображения, самый большой угол видимости расположен в центре. Это легко подтверждается следующим опытом: ставим камеру на штатив, смотрим на неподвжный объект, вращаем камеру вокруг Z, объект будет двигаться (проекция на матрицу) по следующей траектории. Вообще это несколько контринтуитивно учитывая загнутые вниз линии на скрине раннее. Полагаю, что дело в перспективных искажениях, т.е. меньший охват краями матрицы (обусловненный оптикой/формой матрицы и подобными факторами) компенсируется перспективными искажениями (в углах объекты дальше, значит они более маленькие, это с запасом компенсирует особенности оптики и загибает линии на первом снимке).

Ну и главный вопрос - как разогнуть кадры не на статичном а на группе кадров со вращающейся камерой, чтобы предметы имели одинаковые размеры? Если правильно всё понимаю, то это состояние, когда в тесте с вращением камеры объект будет иметь траектории в виде прямой линии. А кадр после обработки будет растянут в центральной части (т.е. на статичном первом снимке линии загнутся ещё сильнее к центру).

Как это сделать правильно? У меня были надежды на lensfun, там есть target_geomerty=fisheye_orthographic, звучит подходяще, но на деле все режимы работают одинаково и разгибают линии с первого снимка, мне нужно другое. Правда коэффиценты для lensfun я выводил сам, моей камеры нет в базе, может что-то не заполнил для возможности гнуть разными способами.

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

Какие есть мысли/опыт по этому вопросу? Инфа для моей камеры из lensfun базы (можно ли заюзать их для моего кейса, чтобы не выводить новые?):

        <cropfactor>5.62</cropfactor>
        <calibration>
            <distortion model="ptlens" focal="24" a="0.00328" b="-0.03471" c="0.01753"/>
        </calibration>

 , , , ,

kvpfs_2
()

На чем написать клиент/сервер

Форум — Web-development

Приветствую. Обрисую примерную задачу: планируется отправлять покупателям девайс (ну если дойдет до этого, конечно), сердце которового - МК. Есть веб приложуха для телефона.

Сценарий сипользования: включается девайс, получает настройки через dhcp, запускается приложение, девайс периодически шлёт по широковещательному адресу инфу о себе (адрес), приложение коннектится с ним и работает. Приложение - не статические веб страницы, а есть элементы управляемые девайсом (счетчики всякие, таймеры, загрузка другой страницы)

Вопросы:

  1. Почему широковещательный адрес? Чтобы девайс и прложение друг друга находили, пердолинг неподкованных людей со статическими адресами - боюсь слишком высокий порог. Но! А можно ли полагаться на широковещательные адреса? Не уверен точно, но краем уха слышал, что маршрутизаторы дефолтно их не пропускают, или это не так (другими словами - пропускают ли они их между хостами внутри локальной сети, про внешнюю сеть речь не идет, конечно)?

  2. Веб приложения - вообще для меня неизвестное. Подозреваю, что раз клиент имеет управление девайсом в режиме нон-стоп (ну тот же счетчик инкрементить), то там должно быть обмазано джаваскриптом каким-нибудь. В общем - как проще/дешевле по ресурсам/на чем реализовать подобный клиент-сервер? По МК, думаю, каких-то проблем быть не должно (тупо отдать данные и открыть сокет для общения с приложением), а вот на чем сейчас просто написать клиент подходящий для меня под все виды мобилок? Смущают только динамические элементы, хочется спихнуть все задачи по формированию страницы клиенту (ну не на МК же это делать) и открыть сокет для общения с девайсом

PS: хочется написать клиент максимально просто (при сохранении необходимого функционала), а не какое-нибудь rocket science хай энд веб дерьмо с полным комплектом свистелок написанного на монструозном фреймворке

 ,

kvpfs_2
()

Сечение объекта на 2д ролике

Форум — Multimedia

Привет, не знаю как назвать это правильно, попробую набросать демонстрационный, аналогичный пример: имеем статичный снимок, где две комнаты с очень сильно разной интенсивностью освещения, между комнатами дверной проём, камера «смотрит» на проём, т.е. видит обе комнаты сразу. Имеется отснятое движение объекта (пусть это будет прямоугольный брусок для простоты). Хотим наложить движение бруска на снимок с комнатами, брусок перемещается через проём перпендикулярно дверной стене, камера видит сразу две грани прямоугольника.

Тут встаём логичный вопрос, а что делать с освещением? Надо как-то учесть разную его интенсивность при переходе. В реальности фигура сложнее, и не получится (сложно) перенести её в 3д пространство и там смоделировать процесс.

Мне на ум приходит что нужно как-то сделать сечение каждого кадра по плоскости проёма, далее подкорректировать одну часть и наложить их друг на друга, на выходе будет световой переход. Очевидно, что делать это руками для каждого кадра - не вариант совсем. Что можно придумать? Возможно есть какая-то тулза, в которой можно «раскрасить» грани фигуры на ключевых кадрах, т.е. указать руками что является вертикальной гранью, а что горизонтальной? Но как-то хлопотно будет, конечно, а если это человек проходящий через проём + активно жестикулирует, запариться можно грани красить.

Есть ли какие-то разумные инструменты и варианты? Пусть я отсеку руками на 1% проценте кадров, куда дальше это скормить можно, что сделает сечение на оставшихся кадрах?

Ещё думается о чём-то вроде морфинга, но не топорно, а изготовить на его основе маску. Т.е. имеем руками сделанные ключевые кадры, далее линейно автоматом фигура достраивается на каждом кадре (линейное, последовательное заполнение пикселей). Дальше на основе этих кадров создаётся маска в которой точно должна оказаться фигура (например, сумма пикселей в ключевых кадрах + области заданные юзером).

 ,

kvpfs_2
()

Настроить wireguard на роутере

Форум — General

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

Настроил на роутере wireguard, туннуль, разрешен forwarding echo "1" > /proc/sys/net/ipv4/ip_forward, nat. Далее на роутере меняю дефолтный путь с wan на wireguard:

# ip route delete default
# ip route add ${server_ip} dev wan
# ip route add default via ${wg_ip} dev wg0

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

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

 , ,

kvpfs_2
()

Имеется ли в ip пакетах что-то, что может идентифицировать девайс?

Форум — General

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

Столкнулся с ситуацией, когда разные девайсы имели разную скорость доступа к инету, буд-то бы одному из них резали скорость, через некоторое время всё восстановилось. Прикидываю все варианты, есть ли в пакетах что-то вроде session id? И девайс маркирует им весь исходящий от себя трафик. Т.е. id различает не просто телефон от пк, а пк1 от пк2

 ,

kvpfs_2
()

Порядок событий нескольких relaxed atomic'ов

Форум — Development

Привет. Сперва код, затем пояснение и вопрос:

#include <cassert>
#include <thread>
#include <atomic>
#include <vector>
#include <iostream>
using namespace std;

enum mtx_state {
   e_free,
   e_busy,
   e_block
};
std::atomic<mtx_state> mtx = e_free;
std::atomic_int cnt = 0;
std::atomic_flag barrier;
int result;

void t0() {
   while (! barrier.test(memory_order_relaxed));

   mtx_state expected = e_free;
   while (! atomic_compare_exchange_strong_explicit(&mtx, &expected, e_busy,
            memory_order_relaxed, memory_order_relaxed))
      if (expected == e_block)
         return;
      else
         expected = e_free;

   cnt.fetch_add(1, memory_order_relaxed);

   expected = e_busy;
   if (! atomic_compare_exchange_strong_explicit(&mtx, &expected, e_free,
         memory_order_relaxed, memory_order_relaxed))
      terminate();
}

void t1() {
   while (! barrier.test(memory_order_relaxed));

   mtx_state expected = e_free;
   while (! atomic_compare_exchange_strong_explicit(&mtx, &expected, e_block,
            memory_order_relaxed, memory_order_relaxed))
      expected = e_free;
   result = cnt.load(memory_order_relaxed);
}

int main() {
   if (true) {
      vector<jthread> th;
      for (int i = 0;  i != 30;  ++i)
         th.emplace_back(t0);

      th.emplace_back(t1);

      barrier.test_and_set();
   }

   assert(cnt.load(memory_order_relaxed) == result);
   cout << result << endl;
}

Идея примера - стартует 30 потоков, на входе долбятся о барьер для одновременного запуска. Задача каждого из них - взять «мьютекс» (атомик с несколькими состояниями - {свободно, занято, блокировка}, если блокировка, то поток завершается без выполнения работы) и инкрементировать счетчик. Также вместе с этими 30 стартует 1, который блокирует «мьютекс» и читает значение из счетчика в итоговый result.

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

Если счетчик не атомик, то вопроса бы не было, но он атомик. Возможна ли ситуация, когда последнее (блокирующее) взятие мьютекса увидит непоследнее состояние счетчика? Т.е. блокирующий поток читает счетчик, 10 например, кладет его в result, блокирует мьютекс, дальше каким-то чудом счетчик инкрементится, срабатывает assert, это возможно?

 ,

kvpfs_2
()

Посоветуйте маршрутизатор

Форум — Linux-hardware

Привет. Нужен роутер в дом, нормальный. Нормальный это - достаточно шустрый, иметь интерфейс не для дебилов, 5Ггц вафля.

Есть у меня 2 девайса, один тормозит сильно, скорость с ним низкая, у другого интерфейс для идиотов, мастера и всякий подобный шлак

wan - 100 Мбит/c, lan - хотелось бы 1000 Мбит/c. Первый мой девайс тормозит заметно даже на WAN со скоростью 100, девайс не старый, вроде как.

Можете что-нибудь достойное посоветовать по таким критериям?

 ,

kvpfs_2
()

Визуальные метки на полях

Форум — Development

Привет. Пользуюсь консольным nvim, на полях показывается номер строк. Есть такая хотелка: неким сочетанием подкрашивать background цифры на полях в цвет, который отличается от нормального, например в красный. Тем самым создавать визуальную метку подчеркивая некоторое важное место во время штудирования исходников. Я знаю про метки, на которые можно прыгать, но мне нужна именно визуальная метка, а не такая.

Можно ли вкрутить какой-то плагин?

Перемещено hobbit из general

 ,

kvpfs_2
()

neovim + clangd

Форум — Development

Привет. Решил посмотреть как там дела с данной связкой (ранне снес clangd из-за глючности, моет сейчас лучше). Слышал, что neovim начал нативно поддерживать LSP клиента. Ну ок, переписал свой конфиг на луа (боже, насколько же луа приятней vimscripta). Сначала настроил клиента напряму - вроде все норм, но нет signature help’a (подсказка с доступными перегрузками при написании вызова функции). Ладно думаю, что-то не докрутил. Настроил через рекомендованный самим clang’ом nvim-lspconfig - к моему удивлению опять нет нет signature help’a.

Что нужно для его появления? Нужно вкрутить еще это костыль? Может другой? А может я вообще зря взял nvim-lspconfig?

Как сейчас нынче модно получить нормально работающий nvim + clangd? Чтобы сходить туда, сюда, к определению, сигнатур хелп, больше в общем ничего и не требуется

 , , ,

kvpfs_2
()

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