LINUX.ORG.RU

Сообщения James_Holden

 

linux-rt дает пятизначное значение latency - ЧЯДНТ??

Суть проблемы.

# uname -a
Linux angband 6.14.0-rt3-arch1-6-rt #1 SMP PREEMPT_RT Sat, 03 Jan 2026 22:01:07 +0000 x86_64 GNU/Linux

При этом:

# cyclictest -t -a 0-3 --smi
# /dev/cpu_dma_latency set to 0us
policy: other/other: loadavg: 1.40 0.84 0.77 2/699 3127           

T: 0 ( 3106) P: 0 I:1000 C:  36681 Min:     15 Act:   71 Avg:   94 Max:    5997 SMI:       0
T: 1 ( 3107) P: 0 I:1500 C:  24573 Min:     24 Act:   70 Avg:  101 Max:   14803 SMI:       0
T: 2 ( 3108) P: 0 I:2000 C:  18444 Min:     25 Act:   74 Avg:  106 Max:    4149 SMI:       0
T: 3 ( 3109) P: 0 I:2500 C:  14849 Min:     23 Act:   71 Avg:  107 Max:    7104 SMI:       0

Поможите, люди добрыя! Что делать, куда копать? Сами мы не местныя в real time ядре не сечем.

Что может вызывать такие дичайшие задержки? И они на самом деле есть - звук трещит по швам, при работе с низкой задержкой звука.

Железо - ноутбук Lenovo z570,

$ cat /proc/cpuinfo 
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
stepping        : 7
microcode       : 0x14
cpu MHz         : 1751.954
cache size      : 3072 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 2
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb tpr_shadow flexpriority ept vpid xsaveopt dtherm arat pln pts vnmi
vmx flags       : vnmi preemption_timer invvpid ept_x_only flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit mmio_unknown
bogomips        : 4190.66
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
stepping        : 7
microcode       : 0x14
cpu MHz         : 1821.418
cache size      : 3072 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 2
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb tpr_shadow flexpriority ept vpid xsaveopt dtherm arat pln pts vnmi
vmx flags       : vnmi preemption_timer invvpid ept_x_only flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit mmio_unknown
bogomips        : 4190.66
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
stepping        : 7
microcode       : 0x14
cpu MHz         : 1981.878
cache size      : 3072 KB
physical id     : 0
siblings        : 4
core id         : 1
cpu cores       : 2
apicid          : 2
initial apicid  : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb tpr_shadow flexpriority ept vpid xsaveopt dtherm arat pln pts vnmi
vmx flags       : vnmi preemption_timer invvpid ept_x_only flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit mmio_unknown
bogomips        : 4190.66
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
stepping        : 7
microcode       : 0x14
cpu MHz         : 1489.855
cache size      : 3072 KB
physical id     : 0
siblings        : 4
core id         : 1
cpu cores       : 2
apicid          : 3
initial apicid  : 3
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb tpr_shadow flexpriority ept vpid xsaveopt dtherm arat pln pts vnmi
vmx flags       : vnmi preemption_timer invvpid ept_x_only flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit mmio_unknown
bogomips        : 4190.66
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

 ,

James_Holden
()

Ventoy: как заставить работать хоть как то

Понадобилось опять создать установочную флешку с Windows из-под Linux, потому что пока винды нету.

В последнем обсуждении, активно советовали Ventoy. Решил попробовать его освоить.

Отсюда собственно вопрос - а как, что с ним сделать чтобы он хотя бы минимально мог работать? Он не работает. Как вы его используете вообще?

Что делал:

1 Установил Ventoy на флешку при помощи графической утилиты, MBR режим, exFAT файловая система, все по дефолту.

2 Скопировал на нее iso файлы установщика винды, и GRML.

3 Проверил контрольные суммы iso файлов - они записаны корректно.

При загрузке с этой флешки, выдаётся надпись Not A Secure Boot Platform 14, и все, больше ничего. Горит лампочка обращения к диску. Что происходит не понятно.

Если при этом, несколько раз быстро нажать Enter - начинает грузится один из iso файлов, GRML. Но не может загрузиться, виснет при попытке показать меню GRUB. Но это ладно, может GRML несовместим с Ventoy. Как увидеть меню самого Ventoy? Как выбрать, какой iso запускать?

Нигде в документации ничего не написано про это. Просто закиньте iso и все, а что дальше то??

 

James_Holden
()

Запросы HTTP CONNECT к Apache - что это и как бороться?

Есть сервер на VPS. Стали вылетать процессы из-за нехватки памяти, хотя нагрузка на него должна быть околонулевой.

Стал смотреть логи Apache, а там море вот таких штук

82.157.18.3 - - [04/Apr/2025:00:35:56 +0300] "CONNECT movie.douban.com:443 HTTP/1.1" 200 507 "-" "okhttp/3.14.9"

Он постоянно долбится вот так вот, я ходил на этот URL - это какой-то сайт с иероглифами. Что это за напасть такая?

Честно, пытался почитать и разобраться, мучил нейросеть, но я не настоящий сварщик и так ничего толком и не понял. Объясните пожалуйста, как для чайника, что происходит?

Я только понял что CONNECT это некий вариант прокси сервера через мой Apache, но я не настраивал никакого proxy, это просто хостинг сайтика, и какого же лешего какие-то китайцы могут невозбранно ходить на китайские сайты видосов через мой сервер??? Что это вообще с миром такое?

Как можно с этим эффективно бороться, подскажите пожалуйста!

 ,

James_Holden
()

Arturia MiniFuse 1 + Linux = Need Help!

Итак, приобрел звуковую карту Arturia MiniFuse 1. Карты Arturia, в отличие от Focusrite, тут как-то обсуждаются мало, хотя они тоже очень популярны. Пусть эта тема будет обсуждением проблем с Arturia.

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

Что пока удалось заметить. В Windows, если не устанавливая драйвверов воткнуть эту карту, то же самое. Если установить MiniFuse Control Center, он ставит ASIO драйвер, и после этого в Windows начинают работать частоты до 192000 даже в микшере Windows.

То есть гипотетически, со стандартным драйвером usb audio она репортит о поддержке только 44100 и 48000.

Репортит нормальный ряд частот дискретизации.

В интернете не нагугливается пока ничего, вообще ничего!

Может у кого-то есть такая карта, или другая от Arturia?

Может, кто-то сталкивался с такой проблемой у других карт? С чего начать, куда копать? Какие будут идеи?

БАГРЕПОРТ НАЙДЕН

https://github.com/alsa-project/alsa-ucm-conf/issues/313

https://github.com/alsa-project/alsa-lib/issues/388

РЕШЕНО

Подъехала версия pipewire 1.4.1 и alsa-card-profiles 1.4.1. С этими версиями пакетов, все нормально с дефолтным профилем!

 , ,

James_Holden
()

Bluetooth audio: только Linux?? Дожили

КРАТКО: имею двое наушников от Honor, они нормально работают только с Linux! Парадокс и фантастика!

МНОГОБУКАФ:

Немного решил вникнуть в тему беспроводных наушников. Все это еще происходит у меня на фоне недавнего «спора» с @CrX на тему отличимости MP3 и lossy кодеков от lossless.

Тот разговор меня серьезно заинтересовал, я прочитал много материалов, много чего отслушал много на чем, и произошло то о чем мне говорил @thesis - один раз услышав разницу, я все осознал и теперь не могу ничего нормально слушать)))

Так вот, у меня были bluetooth наушники Honor Choice Earbuds X5 (затычки) и я приобрел Honor Choice Headphones Pro (закрытые с оголовьем). Затычки эти я слушал более полугода с кодеком AAC, который выбирается по дефолту, не вникая в качество того, что они мне выдают. Но после экспериментов с MP3, о которых я писал вначале поста, я люто заподозрил, что меня обманули, и что-то тут кардинально не то. Начал смотреть матчасть, и оказалось что все кардинально не так! Ого-го как!

Оба варианта наушников от Honor, имеет два кодека - AAC и SBC. Источник - Android телефон Honor, комп с Linux. В чем дикий подвох? Если погуглить, то везде написано что SBC это лажа, AAC лучше, практически прозрачен, он и выбирается по умолчанию у меня на всем. Но факт в том, что когда я, спустя полгода, переключил на SBC - качество заметно улучшилось! А точнее, слух показывает, что AAC сильно режет стереоэффект и немного ухудшает высокие частоты. Но ведь такого быть не может, AAC это очень хороший кодек!

Тогда я стал смотреть, а с какими параметрами передается поток на наушники. Оказалось, что эти вот наушники Honor, даже полноразмерные - дико обрезаны программно (в прошивке) по ограничению битрейта! Битрейт AAC у них - 131 кбит/с (ограничение со стороны наушников)! Вот это да. Я просто был в трансе…

Тогда я кинулся проверять, а что по кодеку SBC. Ограничение - bitpool 38, вместо положенного 51 по профилю высокого качества! Это у полноразмерных наушников Honor Choice Headphones Pro, которые во всех обзорах хвалят и называют лучшим выбором этой ценовой категории, потому что лучший ЗВУК! А там 131 килобит! Я просто не знаю что делать, я в шоке от жестокости этого мироздания…

SBC с bitpool 38 тоже звучит не идеально, но уже намного лучше. Но не максимально хорошо! Крайне обидно, что тупое программное ограничение, тупо не дает этим хорошим в принципе наушникам, звучать так как они должы!

Но благо, если в качетве источника используется Linux - то в нем хакнутый bluetooth стек и есть вариант кодека SBC XQ, который обходит дурацкое ограничение в наушниках, включая режим двойного моно. И SBC у меня работает с битрейтом под 500 кбит, я не слышу значимой разницы с проводным подключением.

То есть выводы какие:

  1. Производители наушников просто делают дикие подляны, программно урезая битрейт до уровня дна! Проверить это можно только спец утилитами, нигде на коробке никакой информации, в GUI интерфейсах ОС никакой информации!

  2. Нормально такие наушники могут работать только с Linux, который имеет хакнутый кодек SBC XQ. И может еще с LineageOS. Я почти впервые в жизни, нашел аргумент за использование линукса, кроме «мне просто нравится красноглазие»!!! Ура

 ,

James_Holden
()

Bluetooth игнорирует все входящие запросы

Одноплатник Orange Pi Zero, операционка Armbian 25.2.0 на базе Ubuntu 24.04 Noble Numbat.

Система чистая консоль, без графической сессии.

Задача - сделать эту плату приемником bluetooth audio.

Проблема: игнорирутся все входящие запросы на bluetooth, то есть я запускаю bluemon или bluetoothctl на плате, пытаюсь подключаться с телефона к этой плате, и не вижу никаких сообщений вообще.

При этом, плата и телефон уже изначально спарены. ВАЖНО! Подключение С платы НА телефон командой connect MAC работает без проблем, все соединяется, звук с телефона начинает играть через плату! А наоборот - bluetooth на плате никак не реагирует, словно никаких запросов снаружи нет!

Что пробовал - повторить то же с Arch Linux на x86 ноутбуке обычном. Все работает, внешние подключения принимаются сразу, bluemon начинает сыпать информацией после нажатия кнопочки на телефоне.

Такое подозрение, что в этом Armbian что-то блокирует все входящие соединения на Bluetooth! Но что? Кто может блокировать? Куда копать?

 , ,

James_Holden
()

Вменяемые заголовки у GTK3/4 приложений при работе в KDE

Использую приложения: remote-viewer, Helvum. Они то ли на GTK3, то ли на GTK4. При работе в среде KDE общая проблема - конской высоты заголовок. Он - не «системный», то есть не такой как у Qt/KDE приложений, и он очень толстый. Это просто нереально бесит уже, он съедает кучу места и мешает работать.

Есть ли какие-то, любые, что угодно рассмотрю вплоть до патчинга кода и пересборки, методы сделать нормальные заголовки у GTK3/4 приложений?

 ,

James_Holden
()

Ситуация в теме про GIMP и Windows

GIMP настройка RU языка (комментарий)

Прошу дать коллективную, или хотя бы авторитетную, оценку происходящему в этой теме со стороны модератора @shell-script в отношении меня.

По моему мнению, это переходит всяческие, ВСЕ разумные пределы как здравого смысла, так и простой морали.

Ситуация такова - есть вот эта тема, она посвящена багу в GIMP, но специфичному для Windows. Насколько я понимаю даже не то что правила, а многолетнюю практику ЛОРа как форума - обсуждение таких вещей допустимо и не запрещено. Потому что GIMP - одна из центральных опенсорсных программ.

На форуме традиционно обсуждается, и оказывается поддержка по опенсорсу в целом, несмотря на название форума.

Или нет? Тогда вы так и скажите. Давайте поставим тут точку. Нужно авторитетное мнение.

Приходит в тред @shell-script и начинает поливать меня грязью, писать чушь про то что баг в GIMP - это вина самой винды и надо обратиться в Редмонд, ну и прочую шизофазию в таком духе.

При этом модератор (!!) меня оскорбляет первым! А потом удаляет мои посты, но не свои.

По результатам обсуждения в треде был локализован баг, и мной сейчас готовится патч в Гимп, благодаря помощи оказанной мне в треде. Но, уже после этого и видя все это, @shell-script опять приходит и начинает меня травить еще больше! Заявляет что все это не нужно, и зачем я все это (то есть инструкции как обойти баг, места в коде GIMP которые надо поправить чтобы устранить баг) тут пишу. Серьезно???

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

А мы сделаем выводы.

 

James_Holden
()

QEMU. Звук. 2023. Опять все сломано

Итак, на дворе 2023 год. Состояние звуковой подсистемы в QEMU все то же - оно сломано.

РЕШЕНИЕ!!! И общие заметки по состоянию на текущий момент.

  1. Не надо подключать cdrom реальной машины, это ломает звук! То есть -cdrom /dev/cdrom добавлять не стоит.

  2. Вывод через hda эмулируемые сетевые карты напрямую (не через SPICE) - сломан. Через бэкенд pa (pulseaudio) вывод идет намного быстрее чем надо, постоянные глитчи. Через бэкенд alsa - у меня работает нормально, но какие-то глюки при запуске воспроизведения. Они сразу же проходят и выводится чисто. Можно использовать, но работает не очень стабильно при переключении окон, фоновой нагрузке. Возможно, тут нужно увеличивать буферы.

-audiodev alsa,id=snd0 -device ich9-intel-hda -device hda-output,audiodev=snd0
  1. Вывод через SPICE, hda звуковая карта в qemu - работает лучше всего. Это по дефолту и ставит virt-manager.
-audiodev spice,id=snd0 -device ich9-intel-hda -device hda-output,audiodev=snd0
  1. Вывод через ac97 работает, если выбрать бэкенд alsa (спасибо @superuser). Работает хорошо, но раз в несколько секунд происходит глитч. На реальной музыке это практически не заметно, на тестовом сигнале я слышу. Это - предпочтительный вариант для применения без SPICE.
-audiodev alsa,id=snd0 -device -device ac97,audiodev=snd0

ЦЕЛИКОМ рабочая конфигурация

qemu-system-x86_64 -enable-kvm -rtc base=localtime -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time -smp 2,sockets=1,cores=2,threads=1 -m 2G -netdev user,id=mynet0 -device virtio-net-pci,netdev=mynet0 -vga qxl -device virtio-serial-pci -device virtio-balloon -spice unix=on,addr=/tmp/vm_spice.socket,disable-ticketing=on,playback-compression=off -device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 -chardev spicevmc,id=spicechannel0,name=vdagent -audiodev spice,id=snd0 -device ich9-intel-hda -device hda-output,audiodev=snd0 -device ich9-usb-ehci1,id=usb -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on -device ich9-usb-uhci2,masterbus=usb.0,firstport=2 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4 -chardev spicevmc,name=usbredir,id=usbredirchardev1 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 -chardev spicevmc,name=usbredir,id=usbredirchardev2 -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2 -chardev spicevmc,name=usbredir,id=usbredirchardev3 -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3 -drive file=~/vms/Win10-main.qcow2 -device usb-tablet,bus=usb.0 -monitor stdio

ДАЛЕЕ - для истории, исходный пост

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

ЭКСПЕРИМЕНТ 1, вывод через SPICE

Начинаю вот с такого, полная строка запуска

qemu-system-x86_64 -enable-kvm -rtc base=localtime -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time -smp 2,sockets=1,cores=2,threads=1 -m 2G -netdev user,id=mynet0 -device virtio-net-pci,netdev=mynet0  -vga qxl -device virtio-serial-pci -device virtio-balloon -spice unix=on,addr=/tmp/vm_spice.socket,disable-ticketing=on,playback-compression=off -device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 -chardev spicevmc,id=spicechannel0,name=vdagent -audiodev spice,id=snd0,out.mixing-engine=off,out.buffer-length=200000,out.fixed-settings=off -device ich9-intel-hda -device hda-output,audiodev=snd0 -device ich9-usb-ehci1,id=usb -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on -device ich9-usb-uhci2,masterbus=usb.0,firstport=2 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4 -chardev spicevmc,name=usbredir,id=usbredirchardev1 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 -chardev spicevmc,name=usbredir,id=usbredirchardev2 -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2 -chardev spicevmc,name=usbredir,id=usbredirchardev3 -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3 -drive file=~/vms/Win10-main.qcow2,if=virtio -drive file=~/vms/diskb.qcow2,if=virtio -device usb-tablet,bus=usb.0 -cdrom /dev/cdrom -monitor stdio

Конкретно звук в ней:

-audiodev spice,id=snd0,out.mixing-engine=off,out.buffer-length=200000,out.fixed-settings=off -device ich9-intel-hda -device hda-output,audiodev=snd0

Симптомы: примерно раз в секунду происходит щелчок. На записи видны две проблемы: выпадение куска на 10мс (идет тишина вместо сигнала), и наоборот, съедается какой-то кусок (виден резкий скачок на синусе, сбивается фаза синуса после этого).

С виртуалки вывел синус ровно 60 секунд, на записи - около 59 секунд. То есть сигнал съедался.

ЭКСПЕРИМЕНТ 2, вывод через Pulse

-audiodev pa,id=snd0 -device ich9-intel-hda -device hda-output,audiodev=snd0

Симптомы те же. Но! Теперь минутный фрагмент стал короче на… 15 секунд! То есть виртуалка выводит звук намного быстрее, чем нужно!

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

ВОПРОСЫ

1 Есть ли у кого-то опыт подбора опций, которые дают на 2023 год нормальную работу звука в QEMU?

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

 , , ,

James_Holden
()

Скринкаст в локальной сети

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

Первое что пробовал - VNC. Да, не совсем то, потому что мне не нужно удаленное управление, нужно только картинку выводить. Но это самое простое.

Имею - KRFB в качестве сервера, plasma-wayland сессия. В качестве клиента винда с RealVNC клиентом. Тормозит просто запредельно! При этом, раз в несколько минут KRFB просто вылетает. Работает ужасно!

После некоторых копаний, выяснил что с вейландом VNC работает просто никак (а говорили, что сетевая прозрачность X не нужна ибо есть VNC для вейланда). В plasma-X11 сессии с x11vnc работает лучше, но тоже очень плохо.

И! В голом openbox, без композитинга - наконец x11vnc работает нормально. Вообще неплохо, прям можно удаленно работать! Не может только в видео.

То есть, виной всему композитинг?? А есть какие-то решения, или какие-то подвижки, по VNC с wayland?

Далее, о скринкасту. Нашел, что есть OBS и оно делает как раз то что мне надо. Но - оно предлагает стримить на ютуб, телеграм или черт знает куда еще. А мне надо просто все локально.

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

 , ,

James_Holden
()

Чувствительность тачпада

Собственно таков и вопрос - как ее настраивать, если все работает через libinupt и plasma-wayland?

РЕШЕНИЕ актуально работающее, через libinput quirks

https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html

 , ,

James_Holden
()

Как установить Tensorflow?

Нид хелп!

Дистрибутив Arch Linux, python 3.10.9.

Из репозитория установить не могу - пакет python-tensorflow конфликтует с FreeCAD.

Ну ладно, ставлю через pip - ставится tensorflow 2.11, который не работает - он требует SSE4.2, в процессоре такого нету.

В интернете нашел, что надо ставить tensorflow 1.5 тогда, но из pip оон куда-то испрарился - там начиная с 1.8.

Подскажите, как быть? Как его установить хоть как-то?

 ,

James_Holden
()

Есть ли IDE лучше KDevelop?

Долгое время использую KDevelop для разработки на C, C++, Python, PHP/JavaScript/HTML.

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

От IDE требую базовой функциональности:

  1. Навигация по коду - переход к определению, к объявлению, поиск мест где используется функция/переменная.

  2. Семантическая подсветка - не по ключевым словам, а по смыслу (локальная переменная, глобальная, атрибут класса и т. д.)

  3. Простейший рефакторинг - переименовать переменную, тип.

Помимо этого, желательно то, что является плюсом KDevelop - проектом является каталог, для сборки используется напрямую нормальная система сборки (make,cmake,meson) а не внутри-IDEшное нечто.

Из очевидных альтернатив вижу Eclipse, VS Code и возможно Qt Creator.

У последнего как-то скудно с языками, куцые возможности, вроде бы перечисленные выше пункты есть но реализованы намного менее удобно чем у KDevelop.

Eclipse - как оно? Какой-то монстр, но я его внимательно никогда не тыкал, есть ли смысл?

VS Code - относительно неплохо, но вот с PHP не срастается. Установил дополнение, и все работает как мне надо, но - только если открыть файл через диалог открытия файлов. Если открыть каталог на панели слева, и там тыкать по файлам - это дополнение не активируется. Вот как этим пользоваться? Почему так? Я не понял.

Возможно, стоит рассмотреть что-то еще?

 , , ,

James_Holden
()

QEMU + Android - имитация тачскрина

Проблема проста. Есть виртуалка QEMU с Android x86. Все работает, но у многих приложений проблема - управление рассчитано на тачскрин, а по факту эмулируется мышь. Поэтому просто не работает смахивание (или как это называется), листание проведением по экрану сверху вниз, влево-вправо.

Есть ли какие-то способы заставить QEMU эмулировать именно тачскрин и события тачскрина, а не мыши?

 ,

James_Holden
()

QEMU в реальную сеть через WiFi

Проблема проста. Есть ноутбук подключенный к сети через WiFi.

Надо обеспечить доступ виртуальной машины на QEMU в эту же сеть.

Я понимаю, что для этого теоретически, надо создать tap сетевой адаптер и создать мост включающий его и сетевую карту, через которую реальная машина подключена к сети.

Вот тут и проблема - нельзя просто взять и создать мост с WiFi картой. Или как-то можно?

Подскажите пожалуйста. Возможно есть другие пути?

Виртуалка просто должна работать в реальной сети как еще один компьютер.

Интересует именно QEMU, как это сделать с Virtualbox я знаю, но он не подходит.

#####РЕШЕНИЕ#######

Спасибо @Pinkbyte! Я осилил по твоему совету.

Включаем Proxy ARP

# sysctl net.ipv4.conf.all.proxy_arp=1

Включаем IP Forwarding

# sysctl net.ipv4.ip_forward=1

Создаем tap сетевой интерфейс, доступный для пользователя (важно! qemu работает от пользователя !)

# tunctl -p -t tap0 -u <username>

Создаем маршрут для ip адреса виртуалки через tap0

ip route add 192.168.1.199 dev tap0

Запускаем QEMU с параметрами сети

-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=mynet0

На гостевой системе - настраиваем статический ip адрес 192.168.1.199.

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

 ,

James_Holden
()

NixOS: лечение MTP+KDE

В продолжение темы Скопировать файлы между Android телефонами

Итак, удалось выяснить вот что, и несколько продвинуться в данном вопросе. Задаю вопросы к гуру по NixOS как лучше эти фиксы в nixpkgs сделать и оформить.

  1. В деривации kio-extras создается dbus service файл, который дергает бинарник демона kiod не из той деривации. Поэтому kio-extras, а в его составе и поддержка mtp, вообще не работает. Тут вопрос - как грамотно решить эту ситуацию в https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/kde/kio-extras.nix. В какую фазу что лучше добавить, чтобы заменить в файле
$out/share/dbus-1/services/org.kde.kmtpd5.service

строчку

Exec=и-что-там

на

Exec=${kio}/libexec/kf5/kiod5
  1. Далее проблема - пакет https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/libmtp/default.nix должен добавить udev rule, и при этом он имеет три выхода - bin, dev, out. Правило udev лежит в out, но ищет сборка его почему-то в bin. В результате правило не добавляется, телефон не помечается как mtp устройство и solid (из KDE) его вообще не видит.

Пока решил это так в configuration.nix:

services.udev.packages = [ pkgs.libmtp.out ];

Как это решить более лучше, поправив пакет в nixpkgs? Я так думаю что лучше, если сам пакет libmtp будет правильно добавлять правило из себя, но я не до конца понял как оно работает.

После исправления проблем 1 и 2 все работает! Прошу помочь поправить nixpkgs и подсказать как оформлять пулл реквест.

 , ,

James_Holden
()

Скопировать файлы между Android телефонами

Простейшая задача. Есть старый телефон на Android, есть новый. Надо скопировать файлы со старого (фото, музыка) на новый.

Превращается в тотальный кошмар - уже прошло полдня и я ничего не могу сделать!

Что пробовал:

  1. Вставить флешку через OTG и скопировать туда. Не работает - половины файлов после копирования там нет. Почему - не знаю.

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

  3. Кабель - не работает. Как известно, лет 15 уже как по кабулю телефоны как флешка не монтируются. MTP просто не работает, никак. Этот вариант отпадает.

Два вопроса:

  1. Как скопировать файлы?

  2. Кто пускает [censored by hobbit] разрабатывать ОС Android???

 

James_Holden
()

NixOS: dri 32 бит на своем ядре

@t184256 @balsoft

Очередной глобальный затык.

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

Теперь с этим возникла тотальная проблема - с ним не хотят ставиться 32-битные dri библиотеки!

Суть проблемы:

nixos-rebuild boot 
building Nix...
building the system configuration...
error:
       Failed assertions:
       - Option driSupport32Bit requires a kernel that supports 32bit emulation
(use '--show-trace' to show detailed location information)

В manual-config.nix я вижу что проверяется вот эта опция у пакета ядра

config.boot.kernelPackages.kernel.features.ia32Emulation

Хорошо. Как ее поставить в true? Также в manual-config.nix вижу вот что:

  features ? null,
}:

Поэтому пробую вот так:

custom-kernel-pkgs = pkgs.linuxPackagesFor (pkgs.linuxKernel.manualConfig {
    inherit (pkgs) stdenv lib;
    inherit (pkgs.linuxKernel.kernels.linux_5_15) src; # change here if you want a different version
    version = "${pkgs.linuxKernel.kernels.linux_5_15.version}-custom";
    configfile = ./config;
    features = { efiBootStub = true; ia32Emulation = true; iwlwifi = true; needsCifsUtils = true; netfilterRPFilter = true; };
    allowImportFromDerivation = true;
  });

И ничего, не срабатывает! Почему? Я же определил эту опцию как true?

 

James_Holden
()

NixOS: свой конфиг ядра

@t184256 @dan4ik

Я честно пытался осилить сам. Но… я не знаю, документация по NixOS это полный провал. Не знаю как это цензурно описать.

Задача: есть .config файл, заранее подготовленный. Получить конфигурацию на ядре с таким конфигом.

По этому поводу в NixOS Manual (https://nixos.org/manual/nixos/unstable/#sec-linux-config-customizing) вижу вот это:

custom-kernel = let base_kernel = linuxKernel.kernels.linux_4_9;
  in super.linuxKernel.manualConfig {
    inherit (super) stdenv hostPlatform;
    inherit (base_kernel) src;
    version = "${base_kernel.version}-custom";

    configfile = /home/me/my_kernel_config;
    allowImportFromDerivation = true;
};

Сразу вохникает вопрос. Что это? К чему это? Куда это пихать?

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

Ну ладно, по .super я догадываюсь что наверное это внутренности оверлея (но я честно не уверен). Делаю тогда так в configuration.nix:

boot.kernelPackages = pkgs.custom_kernel;
  nixpkgs.overlays = [(self: super: {
     custom_kernel = let base_kernel = pkgs.linuxKernel.kernels.linux_5_15;
       in super.linuxKernel.manualConfig {
         inherit (super) stdenv lib;
         inherit (base_kernel) src;
         version = "${base_kernel.version}-custom";

         configfile = ./config;
         allowImportFromDerivation = true;
     };
  }) ];

Как видно код не совпадает с тем что в Manual, потому что в том мануальном коде сразу возникает ряд ошибок - нет параметра lib, лишний параметр hostPlatform. Спрашивается, почему так? Не понятно.

В итоге с вот этим кодом выше - получаю ошибку:

error: attribute 'extend' missing

       at /nix/var/nix/profiles/per-user/root/channels/nixos/nixos/modules/system/boot/kernel.nix:40:31:

           39|       type = types.unspecified // { merge = mergeEqualOption; };
           40|       apply = kernelPackages: kernelPackages.extend (self: super: {
             |                               ^
           41|         kernel = super.kernel.override (originalArgs: {

что с этим делать?

Вот как для этой простейшей задачи (и очень распространенной) простейший пример из документации я должен применить? Я не понимаю…

 

James_Holden
()

xanmod... рвет linux-rt в low-latency аудио задачах???

Я в шоке…

Годами, буквально годами пытаюсь получить минимальную задержку при обработке аудио на ноутбуке с jack, а теперь и с pipewire.

Платформа - Sandy Bridge, встроенное аудио Realtek ALC272.

Всегда считал нормой для этого ноутбука буфер 48000 Гц / 256 семплов (5,3 мс задержка) (кто в теме то поймет что это). Тут на ЛОРе мне много раз писали что это совсем не круто. Да я и на слух слышу задержку при игре на гитаре. Это все на обычном ядре, дефолтном в дистрибутивах. При меньшем буфере стабильно не работает.

Периодически я решал озаботиться улучшением, первое что советуют везде - использовать linux_rt вместо обычного ядра. Это немного улучшало ситуацию, можно было получить вдвое меньшую задержку 48000/128 (2,7 мс). Но не очень стабильно. Это - тоже совсем не айс!

И вот, чисто случайно, без объявления войны, я ставлю NixOS и в нем ядро xanmod 5.14. Происходит какая-то мистика!

Я выставляю 48000 / 64 (это уже 1.3 миллисекунды задержки). Все гранитно стабильно!

Выставляю 48000 / 32 (тридцать два, Карл!) - работает! Иногда похрюкивает.

КАК???? Это вообще законно??

Вопрос у меня вот в чем - как именно в xanmod так выходит, какие опции, или модификации, могут повлиять на то что стало вот так?

ИТАК

Пожалуй подведу окончательные итоги.

  1. Практически все широко распространенные в сети рекомендации надо читать навыворот. Почему - отдельный вопрос.

  2. Лучше всего для обеспечения low-latency при работе с аудио подходит обычное, общего назначения ядро. Даже ванильное ядро с kernel.org может обеспечить экстремально низкую задержку на моем музейном железе.

  3. Ядро linux_rt подходит заметно хуже. Я не знаю почему. Видимо оно для совсем других задач, а то что оно работало со звуком лучше - дела давно минувших дней. Современные версии обычного ядра работают лучше.

  4. Рекомендации по настройке ядра, по CONFIG_HZ, PREEMPT - можно выполнять, можно нет. Низкая задержка достижима с любыми вариантами этих настроек.

  5. Желательно собирать ядро с минимальной конфигурацией. по-видимому я столкнулся с тем, что на конфигурации от Arch Linux на моем железе что-то лишнее мешало.

 , , , ,

James_Holden
()

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