LINUX.ORG.RU

Сообщения max_lapshin

 

DVB на arm64

Форум — Linux-hardware

пытаюсь запустить драйвера https://github.com/DigitalDevices/dddvb на jetson ( arm64)

Не получается не то что настроить тюнер, а вообще сделать что-либо с ними:

# ./astra --femon 'dvb://#adapter=3&type=S2&frequency=11785&polarization=R&symbolrate=27500' |head -20
Oct 18 13:29:13: INFO: [main] Starting Astra v.5.61
Oct 18 13:29:13: INFO: check license
Oct 18 13:29:13: ERROR: [core/socket 4] getaddrinfo() failed 'ls1.cesbo.com' [No address associated with hostname])
Oct 18 13:29:13: ERROR: [dvb_input 3:0] FE_SET_PROPERTY DTV_CLEAR failed [Inappropriate ioctl for device]
Oct 18 13:29:13: ERROR: [dvb_input 3:0] FE_SET_PROPERTY DTV_CLEAR failed [Inappropriate ioctl for device]
Oct 18 13:29:13: ERROR: [dvb_input 3:0] FE_SET_PROPERTY DTV_CLEAR failed [Inappropriate ioctl for device]

в интернетах говорят про проблему dvb на arm64: https://tvheadend.org/issues/2665 типа из-за размера структур проблемы.

Кто-нибудь пробовал завести DVB плату на 64-битном арме?

 ,

max_lapshin
()

ускорить загрузку ядра в uboot

Форум — Development

Есть девайс, подключен к интеловому серверу гигабитной сетью.

Сейчас uboot грузит ядро по гигабитной сети со ужасной скоростью порядка 10 мегабит в секунду. Суммарно 24 мегабайт грузятся почти 24 секунды (мегабайт в секунду).

Я немного прикинул, почему так получается и предположил, что проблема в следующем: сервер шлет следующий пакет только после подтверждения предыдущего клиентом. При MTU около 1 миллисекунды получается что за секунду приходит около 1000 пакетов по полтора килобайта, что должно дать нам оценку в 1-2 мегабайта в секунду.

Хочется эту скорость поднять.

Я вижу два варианта:

1) воткнуть в uboot http. Это даст возможность на полной скорости всё влить 2) воткнуть в uboot tftp с докачкой, т.е. поменять протокол и пусть сервер льет кадр за кадром (9-килобайтный MTU), без подтверждения, а потом клиент пришлет подтверждение полученным пакетам.

Т.е. надо поднять скорость перегона пакетов минимум в 50 раз, что бы выбрать хотя бы на половину сетевой интерфейс.

Вопрос: как же это правильнее сделать?

UPD: на арме всё таки можно сжать ядро: uboot aarch64 zImage: unsupported? (комментарий)

 , ,

max_lapshin
()

Поучите пользоваться patch: как накатить патчи к ядру к разным версиям?

Форум — Development

Есть ядро версии 4.9, к его дефолтному конфигу есть config-4.9.patch, который я сделал так:

diff -u .config.orig .config > config-4.9.patch

Что-то выключил, что-то включил.

Потом я применяю так: patch -p0 < config-4.9.patch

Ядро обновили до 4.12, соответственно патч больше не накладывается, потому что сдвинулись номера строк.

Если бы я писал сам утилиту для редактирования конфига ядра, то мне номера строк были бы не нужны, потому что все строки в конфиге ядра уникальные.

Наверняка уже тысячи людей делали подобное.

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

 ,

max_lapshin
()

как создать виртуальный platform_device в ядре?

Форум — Development

Пытаюсь заюзать старый код от 2012 года https://gist.github.com/maxlapshin/99c01ab4cf4e48d76819f4a96f6b8a90

dvb_dummy_adapter.c

Штука делает простую вещь: программа настраивает тестовый DVB тюнер и начинает сосать данные. Данные попадают те, которые заливаются в тюнер из юзерленда через /dev/dvb/adapter0/dvr0

Сейчас драйвер устроен как platform_driver

В нём есть старый код, который deprecated: в инициализации драйвера идет прямое создание устройства:

https://gist.github.com/maxlapshin/99c01ab4cf4e48d76819f4a96f6b8a90#file-dvb_...

platform_device_register_simple

Это мало того, что очень не рекомендуется, так ещё и не дает выгрузить драйвер: после rmmod в /sys/devices/platform/dvb_dummy_adapter.0 остаются данные

Вопрос: а как отказаться от platform_device_register_simple если такого устройства нет?

Как сообщить ядру, что я хочу что бы создалось устройство dvb_dummy_adapter@0, которое будет обслуживаться этим драйвером?

Если я правильно понимаю, то в нормальных условиях какой-то пробник шины найдет устройство и запустит ему функцию probe, а как это должно тут работать?

 , , ,

max_lapshin
()

как соединить сервер с мобилой по шнурку (протокол общения по USB)?

Форум — Development

стоит сервер на котором весь софт мы можем залить какой хотим

надо дать эксплуатанту сервера (он не админ, у него нет рута) программу (например для андроида), которая позволит по USB шнурку настроить айпишник, может сбросить пароль.

Я не понимаю, какой протокол общения будет между ними. На сервере что-то должно слушать USB, на телефоне должно пытаться найти кого-то с другой стороны USB.

Что это за протокол? Просто интернет между ними поднимать или искать какой-то ещё протокол общения?

UPD: https://github.com/libimobiledevice/ Этот демон запускается на линуксе и ловит пришедший айфон. На айфоне запускаем софтину, которую мы сами написали и она пытается соединиться с устройством по шнурку. Прототип айосного приложения там же, на гитхабе.

с андроидом пока не получилось.

 , ,

max_lapshin
()

стабильность PCI путей

Форум — Admin

У меня есть несколько одинаковых серверов, в которых натыкано много сетевых карт.

Я для одного сервера написал systemd link правила по PCIe пути, выдающие имена, которые мне нужны.

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

 ,

max_lapshin
()

uboot aarch64 zImage: unsupported?

Форум — Admin

Ядро собирается в 30 мегабайт Image и порядка 6 мегабайт zImage

uboot на aarch64 не умеет грузить zImage.

Кто-нибудь видел объяснения, почему так?

Может встречал патчи для 64-битного декомпрессора?

UPD: uboot aarch64 zImage: unsupported? (комментарий) возможно

 , ,

max_lapshin
()

Управление systemd-networkd через API

Форум — Development

Привет.

Я хочу управлять настройками сетевого интерфейса из веб-интерфейса.

Сеть построена на systemd-networkd

1) не могу найти, есть ли правильный способ спросить у systemd какие настройки сети используются?

Хочется узнать, что там вообще: dhcp или статический адрес и если статика, то какая?

2) судя по strace, networkctl ходит через NETLINK. Это разумный и легитимный способ получения фактической информации о сети?

 ,

max_lapshin
()

Что происходит в ядре, когда драйвер делает udelay?

Форум — Development

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

Когда драйвер делает udelay, то он остается на ядре и занимает его? Другие драйверы или юзерские программы не могут пользоваться этим ядром?

Или всё таки внутри ядра есть какой-нибудь шедулер, который займет это время чем-то ещё?

 , ,

max_lapshin
()

Как правильно поллить результат inb (данные с порта)?

Форум — Development

По LPT порту воткнута железка, на которой есть кнопка.

Когда кнопка нажата, из порта по адресу можно прочитать 1, когда не нажата — 0

Как правильно с этим работать? Поллить раз в 100 мс, или искать способ заставить эту конструкцию генерировать прерывание?

 , , , ,

max_lapshin
()

Bounty: добавить в драйвер ядра intel/igb управление software defined pins

Форум — Job

Есть сетевая карта intel i350 ( Intel i350: как подергать за gpio )

У неё есть возможность воспользоваться software defined pins.

У меня есть экземпляр карты (к сожалению пока только один, серию ещё будем заказывать), у которого к одному из пинов припаяна внешняя система

Мне нужно из userland управлять этими пинами.

Судя по документации и коду, который я вижу https://github.com/torvalds/linux/blob/master/drivers/net/ethernet/intel/igb/...

нужно подергать за нужные биты регистра CTRL (раздел 8.2.1) и CTRL_EXT (8.2.3) для доступа к пинам от 0 до 3.

Выглядит, что надо добавить к драйверу API для работы через gpio.

Я хочу:

1) получить возможность подергать за эти биты (это нужно сделать максимально быстро любым, даже самым грязным способом)

2) оформить это в виде патча к ядру линукса

3) по возможности отправить этот патч в mainline

UPD: вопрос снят, будем вливать патч в апстрим

 , , ,

max_lapshin
()

Intel i350: как подергать за gpio

Форум — Linux-hardware

Есть сетевая карта Intel i350:

04:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
	Flags: bus master, fast devsel, latency 0, IRQ 17
	Memory at df600000 (32-bit, non-prefetchable) [size=128K]
	I/O ports at e000 [size=32]
	Memory at df640000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
	Capabilities: [70] MSI-X: Enable+ Count=10 Masked-
	Capabilities: [a0] Express Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Device Serial Number 00-90-0b-ff-ff-5e-0a-a5
	Capabilities: [150] Alternative Routing-ID Interpretation (ARI)
	Capabilities: [160] Single Root I/O Virtualization (SR-IOV)
	Capabilities: [1a0] Transaction Processing Hints
	Capabilities: [1d0] Access Control Services
	Kernel driver in use: igb
	Kernel modules: igb

https://www.intel.com/content/www/us/en/embedded/products/networking/ethernet...

У неё есть GPIO выходы, к которым припаяли лампочку.

Мне хочется программно управлять этими выходами.

В спеке в разделе 1.4.8 указано, что есть Software definable pins и ими можно рулить через eeprom

Наверное мне надо научиться изменять eeprom что бы добраться до этих пинов через /sys/gpio?

 , ,

max_lapshin
()

Забрать в линуксе DHCP опции из PXE

Форум — Admin

Компьютер загружается по IPXE.

Скачивает ядро, initrd, запускает. Потом ещё раз получает настройки по dhcp.

Можно ли каким-то штатным образом забрать первый полученный dhcp ответ, что бы не делать повторное dhcp ожидание?

 ,

max_lapshin
()

Минимальная компиляция glibc: как правильно?

Форум — Admin

Хочу собрать glibc в минимальном размере. Дефолтная инсталяция make install занимает 178 мегабайт, хочется ужаться где-то до 2.

В glibc идут всякие штуки, которые мне для моей задачи не нужны абсолютно: sunrpc, hesiod, crypto и т.п.

План собрать маленькую glibc + busybox + dropbear и получить initramfs где-то мегабайт на 4-5 что бы быстро грузилось по PXE.

Меня удивило полное отсутствие туториалов. Обычно накопипастишь с серверфолта из первой половины страницы (где правильные ответы) и что-то работает, а тут полный ноль. Единственное упоминание попыток уменьшить размер установки glibc — https://wiki.netbsd.org/tutorials/how_to_reduce_libc_size/

Это очень круто, но не то.

В glibc при установке образуется куча всякого хлама, который в теории нужен десктопу, но никак не нужен изолированному серверу: iconv, gconv, локали, инклюды и т.п.

Есть какие-то правильные механизмы по сборке и упаковке glibc для минимального размера?

 , ,

max_lapshin
()

ipxe — он в ROM сетевухи или она его загружает?

Форум — Admin

Никак не могу разобраться, подскажите пожалуйста.

Когда dhcpd отдает сетевухе filename «menu.ipxe», в котором просто текстовый файл:

``` menu title PXE Boot Menu

timeout 50 default Network

label Network menu label Boot from PXE server kernel Image initrd uRamdisk ```

то кто этот файл читает и показывает? Сама прошивка сетевухи, верно?

 

max_lapshin
()

Bounty: добавить в mksquashfs поддержку чтения из tar напрямую (docker -> squash)

Форум — Job

Есть утилита mksquashfs из пакета https://github.com/plougher/squashfs-tools

Она умеет делать readonly образ файловой системы.

Есть докер, который умеет выгружать свои образы в tar.

Когда в CI под не рутом распаковываешь tar в директорию, что бы из неё сделать squashfs, то убиваются все права, владение файлами и нельзя сделать файлы из /dev

Хочется что бы mksquashfs перепаковывал tar в образ напрямую, без распаковки на диск.

Мейнтейнер не понял, зачем это нужно: https://github.com/plougher/squashfs-tools/issues/25 а ему плохо объяснили.

Я готов заплатить за эту работу, нужен патч, который делает эту вещь. Достаточно уметь делать это не из стрима, а из файла, но из tar-стрима будет ещё лучше.

Код нужно будет залить в наш репозиторий https://github.com/flussonic/squashfs-tools и надо будет оформить pull request, который хорошо бы что бы приняли.

Оценки по времени и деньгам можно прислать мне напрямую на max@erlyvideo.org

 , ,

max_lapshin
()

упаковка debian для запуска с флешки (а-ля buildroot)

Форум — Development

Хочу взять USB флешку и залить на неё дебиан так, что бы он запускался оттуда, сохранял на неё конфиги, но ничего типа логов не писал.

Для всяких ip-камер и роутеров есть buildroot, который позволяет удобно собрать готовый дистрибутив.

Есть что-то похожее для дебиана?

Не очень понятно: сделать ondemand чтение из сжатого образа ФС на USB флешке или сделать ramdisk, в который копировать всё на старте.

 ,

max_lapshin
()

разработчик на C в Эрливидео

Форум — Job

Всем привет!

Я ищу нового коллегу нам в Эрливидео писать на C под линукс обработку видео.

Нужно будет:

  • девелопить наш транскодер (nvidia, ffmpeg, quicksync и прочие смежные технологии)
  • пилить обвязку вокруг видео-аналитики (нейросетки, Caffe), связанную с транскодированием видео

Работать можно как в Москве в офисе, так и удаленно.

Мы активно работаем с современными инструментами: git, redmine, CI/CD. Так, например, в большинстве проектов принято не давать мержить ветки без прогона тестов, а результат сразу пакуется в deb пакеты для установки.

Команда распределенная, так что много общения проходит в чате.

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

Зарплата: 120-170 тыс р, оформление белое по ТК РФ.

Присылайте резюме на hire@flussonic.com

 ,

max_lapshin
()

PLX PCIe switch + Amd threadripper

Форум — Linux-hardware

Есть потребность воткнуть как можно больше видеокарт на 16x PCI-E в компьютер.

Существуют материнки с PLX свитчами, которые берут у процессора, скажем, 20 линий и превращают их в ненастоящие 4*16 линий для того, что бы видеокарта думала, что у неё 16 линий и все 4 карты включались бы на полном режиме.

Чуда там конечно не происходит, но работает лучше, чем 4 в режиме 8 линий.

Есть AMD threadripper, у него 64 линии на выход, но из них несколько заняты под периферию.

А существует ли подобная штука типа plx для AMD? Ведь если из проца выходят свободные 60 линий, то превратить их в 64 будет гораздо эффективнее, чем 20 линий в 64.

Ведь очень обидно: стоит threadripper и на болте крутит интел, а воспользоваться этим не получается.

 , ,

max_lapshin
()

при установке старой версии пакета apt вытягивает слишком новые версии зависимостей

Форум — Admin

Есть репозиторий в котором лежита пакеты mytool версий 1.0, 1.5 и 2.0

Каждый из них зависит соответственно от пакетов mylib версий 1.0, 1.5 и 2.0

Я ставлю apt install mytool и получаю mytool-2.0 и mylib-2.0

Теперь я хочу откатиться до старого пакета (потому что мы же все знаем, что от долгого лежания из пакета улетучиваются баги):

apt install mytool=1.5

Я хочу что бы apt сам откатил зависимости до нужных, ведь я же не ставил сам руками mylib.

Вместо этого он пищит и всё портит, ругаясь на то, что неправильная версия mylib.

Проблеме не первый год: https://askubuntu.com/questions/531567/why-does-apt-get-install-a-newer-depen... и не первое десятилетие.

Она так и остается? Или для большинства это вообще не проблема?

 , ,

max_lapshin
()

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