29 марта 2026

Управление антенной из SDR приложения

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


Для автоматического управления антенной взял Raspberry PI 3 Model B у которого на борту есть WiFi и Ethernet. Поскольку антенна будет стоять на балконе (на котором не предусмотрена розетка Ethernet), то пока единственным вариантом соединения с raspberry будет WiFi.

26 марта 2026

Продолжение истории с Cilium в GKE

Какое-то время назад я писал про отваливающиеся пробы у подов в GKE кластере после установки Cilium. Тогда пришлось сделать шаг назад и удалить Cilium из кластера чтобы не блокировать команды разработки.

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

Из свежего - несколько часов разбирался почему некоторые поды определённых демонсетов становятся "not ready" спустя несколько часов после создания. Интриги добавляло что это происходило ночью и один из них смог сам починиться и продолжить работу. Эта проблема отличалась от той, с которой я разбирался в отдельном кластере, т.к. там поды не проходили проверки сразу после создания. В итоге причина снова была в Cilium.

23 марта 2026

Дистанционная настройка рамочной антенны

 Это продолжение проекта магнитной рамочной антенны. Такие антенны настраиваются на очень узкий участок диапазона и при смене частоты в приёмнике нужно менять настройки антенны. Это не особо удобно даже если антенна стоит рядом и становится проблемой, если она находится на балконе. Чтобы не бегать каждый раз на балкон делаю электропривод для конденсатора переменной ёмкости.

Для вращения вала КПЕ буду использовать шаговый электродвигатель 17HS4023 формата NEMA17. Я раньше не имел дела с такими моторами и взял размер NEMA17 т.к. они используются в 3D принтерах и найти их в местных магазинах не составляет проблемы. На барахолках можно поискать б/у шаговики от принтеров или сканеров. Шаговые моторы от оптических (CD/DVD) или флоппи приводов выглядят слишком мелкими и скорее всего смогут вращать вал КПЕ только через редуктор.

16 марта 2026

Ошибка "metadata.resourceVersion: Invalid value: 0: must be specified for an update" в Terraform после редактирования ресурса

После редактирования ресурса knativeserving в Kubernetis кластере через kubectl edit Terraform не может применить к нему изменения через gavinbunney/kubectl провайдер:

│ Resource: "operator.knative.dev/v1beta1, Resource=knativeservings", GroupVersionKind: "operator.knative.dev/v1beta1, Kind=KnativeServing"
│ Name: "knative-serving", Namespace: "knative-serving"
│ for: "/tmp/1389615405kubectl_manifest.yaml": error when patching "/tmp/1389615405kubectl_manifest.yaml": knativeservings.operator.knative.dev "knative-serving" is invalid: metadata.resourceVersion: Invalid value: 0: must be specified for an update
│ 
│   with kubectl_manifest.knative_serving,
│   on knative.tf line 163, in resource "kubectl_manifest" "knative_serving":
│  163: resource "kubectl_manifest" "knative_serving" {

Я пробовал использовать параметр force_conflicts = true, но это не даёт эффекта.

Исправляется ошибка удалением аннотации kubectl.kubernetes.io/last-applied-configuration с нужного ресурса.

kubectl -n knative-serving annotate knativeserving knative-serving kubectl.kubernetes.io/last-applied-configuration-

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

15 марта 2026

Обновление прошивки HP ProBook 440 G8

Сменил свой домашний ноутбук с Dell Latitude E7470 на HP ProBook 440 G8. Переставил NVME SSD диск из Dell в HP и заодно решил обновить последнему прошивку.

До обновления была установлена версия прошивки T85 Ver. 01.22.00 от 22 августа 2025:

$ sudo dmidecode -t 0      
# dmidecode 3.6
Getting SMBIOS data from sysfs.
SMBIOS 3.3 present.

Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
	Vendor: HP
	Version: T85 Ver. 01.22.00
	Release Date: 08/22/2025
	Address: 0xF0000
	Runtime Size: 64 kB
	ROM Size: 32 MB
	Characteristics:
		PCI is supported
		PC Card (PCMCIA) is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		EDD is supported
		Print screen service is supported (int 5h)
		8042 keyboard services are supported (int 9h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		ACPI is supported
		USB legacy is supported
		Smart battery is supported
		BIOS boot specification is supported
		Function key-initiated network boot is supported
		Targeted content distribution is supported
		UEFI is supported
	BIOS Revision: 22.0
	Firmware Revision: 51.44

HP предлагает обновление прошивки в виде исполняемого файла для Windows, который можно скачать со страницы поддержки продукта. На момент написания этой заметки доступна версия 01.23.00 Rev.A от 16 января 2026 (имя файла sp168956.exe).

12 марта 2026

Обновление ключа подписи репозитария GitLab

При установке обновлений APT выдал ошибку об устаревании ключа, которым подписан репозитарий Gitlab:

Get:5 https://packages.gitlab.com/gitlab/gitlab-ce/debian trixie InRelease [16.9 kB]
Err:5 https://packages.gitlab.com/gitlab/gitlab-ce/debian trixie InRelease
  Sub-process /usr/bin/sqv returned an error code (1), error message is: Signing key on F6403F6544A38863DAA0B6E03F01618A51312F3F is bad:            The primary key is not live   because: Expired on 2026-02-27T20:15:41Z
Fetched 239 kB in 1s (361 kB/s)
1 package can be upgraded. Run 'apt list --upgradable' to see it.
gitlab-ce is already the newest version (18.7.5-ce.0).
Selected version '18.7.5-ce.0' (gitlab-ce:1/trixie [amd64]) for 'gitlab-ce'
Summary:
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0
Warning: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: https://packages.gitlab.com/gitlab/gitlab-ce/debian trixie InRelease: Sub-process /usr/bin/sqv returned an error code (1), error message is: Signing key on F6403F6544A38863DAA0B6E03F01618A51312F3F is bad:            The primary key is not live   because: Expired on 2026-02-27T20:15:41Z
Warning: Failed to fetch https://packages.gitlab.com/gitlab/gitlab-ce/debian/dists/trixie/InRelease  Sub-process /usr/bin/sqv returned an error code (1), error message is: Signing key on F6403F6544A38863DAA0B6E03F01618A51312F3F is bad:            The primary key is not live   because: Expired on 2026-02-27T20:15:41Z
Warning: Some index files failed to download. They have been ignored, or old ones used instead.

Чтобы обновить ключ достаточно следовать инструкции. У меня не установлен curl, поэтому немного изменил команду для дистрибутива Debian Trixie

$ sudo mkdir -p /etc/apt/keyrings

$ sudo wget -O /etc/apt/keyrings/gitlab-keyring.asc https://packages.gitlab.com/gpg.key

$ echo 'deb [signed-by=/etc/apt/keyrings/gitlab-keyring.asc] https://packages.gitlab.com/gitlab/gitlab-ce/debian/ trixie main' | sudo tee /etc/apt/sources.list.d/gitlab-ce.list

$ sudo apt-get update

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

10 марта 2026

Ремонт подсветки телевизора LG 32LF562V

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

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

Сразу после снятия задней крышки нужно проверить что на разъёме подсветки (выделен красным) есть напряжение. Это выход источника тока и при неисправной подсветке на этом разъёме было 249 В.

07 марта 2026

Магнитная рамочная антенна из алюминиевого обруча

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


Основа новой антенны - гимнастический обруч диаметром 94 см. Чтобы разомкнуть его достаточно высверлить заклёпки и извлечь перемычку. После этого смоделировал и распечатал заглушки для обруча чтобы при стягивании винтами трубка обруча не сминалась.

05 марта 2026

FreeCAD: Camera settings failed to read

Моделирую магнитную рамочную антенну. Тестовая лицензия на Компас-3D истекла ещё в прошлом году, а продажи Компас-3D Home ещё не начались. Пришлось выбирать между OpenSCAD и FreeCAD - в итоге решил дать второй шанс FreeCAD.

Установил AppImage для версии FreeCAD 1.1RC3 (в Trixie сейчас версия 1.0.0). На моделирование стойки КПЕ (конденсатор переменной ёмкости), пластины крепления рамки и скобы для крепления всего к мачте была потрачена добрая часть выходного дня. Одна из причин это отсутствие навыков работы во FreeCAD, а вторая - ошибки самой программы.

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

24 февраля 2026

Перепаковка бинарного пакета SDR++

После экспериментов с Gqrx решил попробовать SDR++. Бинарный пакет который предлагается для Debian 13 зависит от пакетов разработки и на моём ноутбуке конфликтует с Wine. Разбираться что там не так мне не хочется - проще перепаковать бинарный пакет sdrpp чтобы он зависел только от нужных библиотек.

Как найти от каких библиотек он зависит? В Debian есть dh_shlibdeps из debhelper, но он работает с локальными файлами. Т.е. если зависимость ещё не установлена, то dh_shlibdeps не сможет определить её.

Я распаковывал бинарный пакет и прошёлся ldd по всем исполняемым файлам и разделяемым библиотекам. Затем через apt-file нашёл в каких пакетах находятся отсутствующие зависимости и установил их.

$ PKG_FILE=sdrpp_debian_trixie_amd64.deb

$ wget https://github.com/AlexandreRouma/SDRPlusPlus/releases/download/nightly/$PKG_FILE

$ PKG_TMP=$(mktemp -d)
$ PKG_BINARY="$PKG_TMP/binary"
$ PKG_BUILD="$PKG_TMP/build"
$ PKG_NAME=$(dpkg-deb -f $PKG_FILE Package)
$ PKG_VERSION=$(dpkg-deb -f $PKG_FILE Version)
$ mkdir -p $PKG_BINARY $PKG_BUILD

$ dpkg-deb -R $PKG_FILE $PKG_BINARY

$ env LD_LIBRARY_PATH=$PKG_BINARY/usr/lib ldd $PKG_BINARY/usr/bin/sdrpp
	linux-vdso.so.1 (0x00007f8810a5b000)
	libsdrpp_core.so => /tmp/tmp.R2Fe3Rsnwm/binary/usr/lib/libsdrpp_core.so (0x00007f88103ff000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f88101e7000)
	libglfw.so.3 => not found
	libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007f8810160000)
	libfftw3f.so.3 => /lib/x86_64-linux-gnu/libfftw3f.so.3 (0x00007f880fe00000)
	libvolk.so.3.2 => /lib/x86_64-linux-gnu/libvolk.so.3.2 (0x00007f880fa00000)
	libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f8810094000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f880f600000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f880f910000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8810067000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f8810a5d000)
	libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f880fd47000)
	libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f880fd13000)
	liborc-0.4.so.0 => /lib/x86_64-linux-gnu/liborc-0.4.so.0 (0x00007f880f549000)
	libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f880f401000)
	libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f880f8e5000)
	libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f881005e000)
	libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f8810056000)

$ apt-file search libglfw.so.3
libglfw3: /usr/lib/x86_64-linux-gnu/libglfw.so.3
libglfw3: /usr/lib/x86_64-linux-gnu/libglfw.so.3.4

$ sudo apt-get install libglfw3

21 февраля 2026

Сборка SDRAngel для Debian 13

Собрал бинарный пакет для свежего релиза SDRAngel под Debian 13. Бинарные пакеты в GitHub релизе предназначены для Ubuntu и не устанавливаются в Debian.

Пересборка пакета через pbuilder завершилась с ошибкой:

-- Build files have been written to: /build/sdrangel-7.23.2/obj-x86_64-linux-gnu
make[1]: Leaving directory '/build/sdrangel-7.23.2'
   dh_auto_build -O--buildsystem=cmake\+ninja
	cd obj-x86_64-linux-gnu && LC_ALL=C.UTF-8 ninja -j4 -v
[1/2548] cd /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external && /usr/bin/cmake -Dcfgdir= -P /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/tmp/serialdv-mkdirs.cmake && /usr/bin/cmake -E touch /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/src/serialdv-stamp/serialdv-mkdir
[2/2548] cd /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external && /usr/bin/cmake -Dcfgdir= -P /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/limesuite/tmp/limesuite-mkdirs.cmake && /usr/bin/cmake -E touch /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/limesuite/src/limesuite-stamp/limesuite-mkdir
[3/2548] cd /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external && /usr/bin/cmake -Dcfgdir= -P /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/mbelib/tmp/mbelib-mkdirs.cmake && /usr/bin/cmake -E touch /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/mbelib/src/mbelib-stamp/mbelib-mkdir
[4/2548] cd /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external && /usr/bin/cmake -Dcfgdir= -P /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/libsigmf/tmp/libsigmf-mkdirs.cmake && /usr/bin/cmake -E touch /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/libsigmf/src/libsigmf-stamp/libsigmf-mkdir
[5/2548] cd /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/src && /usr/bin/cmake -DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE -P /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/tmp/serialdv-gitclone.cmake && /usr/bin/cmake -E touch /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/src/serialdv-stamp/serialdv-download
FAILED: external/serialdv/src/serialdv-stamp/serialdv-download /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/src/serialdv-stamp/serialdv-download 
cd /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/src && /usr/bin/cmake -DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE -P /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/tmp/serialdv-gitclone.cmake && /usr/bin/cmake -E touch /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/src/serialdv-stamp/serialdv-download
Cloning into 'serialdv'...
fatal: unable to access 'https://github.com/f4exb/serialDV.git/': Could not resolve host: github.com
Cloning into 'serialdv'...
fatal: unable to access 'https://github.com/f4exb/serialDV.git/': Could not resolve host: github.com
Cloning into 'serialdv'...
fatal: unable to access 'https://github.com/f4exb/serialDV.git/': Could not resolve host: github.com
Had to git clone more than once: 3 times.
CMake Error at /build/sdrangel-7.23.2/obj-x86_64-linux-gnu/external/serialdv/tmp/serialdv-gitclone.cmake:50 (message):
  Failed to clone repository: 'https://github.com/f4exb/serialDV.git'

Скачивание чего-либо из сети при сборке запрещено политикой Debian в разделе 4.9:

17 февраля 2026

Как завершить зависшее SSH соединение

 Если по какой-либо причине SSH соединение зависает (например сменился внешний IP адрес) то такое соединение не получится завершить через Ctrl+D или Ctrl+C. Обычно я убивал локальный SSH процесс и заново логинился на сервер.

Оказывается есть способ проще - нужно использовать escape последовательность и для завершения соединения последовательно нажать <Enter> "~" и ".".

OpenSSH клиент поддерживает больше escape последовательностей, справку по которым можно получить через <Enter> "~" и "?".

Supported escape sequences:
     ~.   - terminate connection (and any multiplexed sessions)
     ~B   - send a BREAK to the remote system
     ~C   - open a command line
     ~R   - request rekey
     ~V/v - decrease/increase verbosity (LogLevel)
     ~^Z  - suspend ssh
     ~#   - list forwarded connections
     ~&   - background ssh (when waiting for connections to terminate)
     ~?   - this message
     ~~   - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

16 февраля 2026

Апконвертер: тестирование

Это продолжение серии постов про постройку апконвертера для RTL-SDR приёмника. Собраны и отдельно проверены все компоненты апконвертера: смеситель, ФНЧ, гетеродин и диплексер. Теперь можно соединить их вместе и подключить к SDR приёмнику. Для этого я использовал переходники SMA(папа)—SMA(папа) - они короткие и придают конструкции жёсткость на столе.

В SDR приёмнике заменил разъём на SMA. На плату гетеродина добавил линейный стабилизатор 78L05 и разъём XT60 чтобы питать от аккумулятора. Это позволит немного снизить уровень импульсных помех в и без того шумной городской среде. 

15 февраля 2026

Замена разъёма в SDR приёмнике

 В моём SDR приёмнике на базе RTL2838U антенна подключалась через ВЧ разъём который используют телевизоры для подключения эфирной антенны. Если я не ошибаюсь, то такой разъём называется IEC 60169-2, хотя в магазинах электроники он часто называется PAL.

Чтобы подключить к нему что-то с разъёмами BNC или SMA мне приходилось использовать длинную цепочку из переходников для разъёмов типа F (используются для подключения спутниковых антенн к телевизорам):

  • TV—F (мама) + F (папа)—F (папа) + F (мама)—SMA (папа) 
  • TV—F (мама) + F (папа)—F (папа) + F (мама)—BNС (папа)

Если с другой стороны тоже разъём "папа", то добавлялся соответствующий переходник "мама—мама".  Найти переходник TV—BNC или TV—SMA в местных магазинах не удалось. Такие переходники есть на AliExpress, но ждать месяц или больше на доставку это слишком.

11 февраля 2026

Апконвертер: диплексер

Это продолжение серии постов про постройку апконвертера для RTL-SDR приёмника. После смесителя, ФНЧ и гетеродина приступил к постройке диплексера. Когда начинал этот проект, то планировал подключить к выходу смесителя полосовой фильтр, который будет пропускать от 48 МГц до 78 МГц. Но в итоге решил ставить диплексер, т.к. полосовой фильтр будет отражать обратно в смеситель фильтруемые частоты, а диплексер гасит их на согласованной нагрузке.

Вначале посчитал диплексер по схеме bridged-tee в онлайн калькуляторе и затем смоделировал его в Qucs-S.

На второй гармонике гетеродина (96 МГц) ослабление составило около 7 дБ что сильно хуже результата моделирования полосового фильтра.

07 февраля 2026

Обновление прошивки tinySA Ultra+ ZS407 в Linux

В этом посте описан процесс обновления прошивки для анализатора спектра tinySA Ultra+ ZS407, для других версий стоит свериться с инструкцией на сайте tinysa.org.

Если до этого не обновляли прошивку, то до обновления прошивки стоит выполнить процедуру самопроверки (self-test) чтобы не гадать о причинах если она не пройдёт после обновления. Сайт tinysa.org предупреждает о подделках tinySA которые не пройдут самопроверку после установки официальной прошивки.

Для обновления прошивки понадобится сам tinySA, USB Type-C кабель и утилита dfu-util. В Debian 13 она есть в репозитарии и её можно установить через APT

$ sudo apt install --update -y dfu-util

Далее выключить tinySA, зажать джойстик и включить снова (экран ничего не будет показывать). Затем подключить tinySA к USB порту (я использовал порт USB 2.0 без всяких хабов) и убедиться что в логе ядра появились сообщения о подключении нового устройства.

Feb 05 22:04:32 dragoncore kernel: usb 1-1: new full-speed USB device number 14 using xhci_hcd
Feb 05 22:04:32 dragoncore kernel: usb 1-1: New USB device found, idVendor=0483, idProduct=df11, bcdDevice=22.00
Feb 05 22:04:32 dragoncore kernel: usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Feb 05 22:04:32 dragoncore kernel: usb 1-1: Product: STM32  BOOTLOADER
Feb 05 22:04:32 dragoncore kernel: usb 1-1: Manufacturer: STMicroelectronics
Feb 05 22:04:32 dragoncore kernel: usb 1-1: SerialNumber: 205D38572036

Скачать файл прошивки с расширением .bin с сайта http://athome.kaashoek.com/tinySA4/DFU/ (на момент написания это tinySA4_v1.4-217-gc5dd31f.bin выпущенная 18 декабря 2025). Прежние версии прошивки лежат в http://athome.kaashoek.com/tinySA4/DFU/old/

05 февраля 2026

Случайным образом отваливаются пробы в GKE после установки Cilium и Istio Ambient

 Устанавливал в GKE (Google Kubernetes Engine) кластер Cilium с Istio в режиме ambient и столкнулся со случайными ошибками readiness/liveness проб. Версия GKE 1.34.3, Cilium 1.18.4 и Istio 1.26.3 - не самые свежайшие версии, но работают в других окружениях.

Факты таковы:

  • из десятка подов которые разворачиваются в тестовом окружении один или несколько не проходит readiness/liveness пробу
  • внутри пода и с соседнего пода можно запросить нужный URL который используют пробы
  • если вручную удалить этот под, то он начинает работать нормально
  • автоматический рестарт из-за liveness не исправляет ситуацию

Я уже сталкивался с "отвалившимися" пробами после включения Istio Ambient, но тогда пробы не работали в 100% случаев, а здесь это происходит случайным образом. Исправление удалением пода намекает на проблемы связанные с работой CNI.

01 февраля 2026

Апконвертер: гетеродин

Это продолжение серии постов про постройку апконвертера для RTL-SDR приёмника. После смесителя и ФНЧ приступил к гетеродину. Купил готовый кварцевый генератор на 48 МГц (взял этот номинал, т.к. "соседние" 40 МГц и 50 МГц стоили дороже). По документации его нагрузочная способность 10 TTL (это значит что к выходу генератора можно подключить до 10 TTL микросхем) или 15 пФ (ёмкость дорожек на печатной плате).


Чтобы не перегружать генератор добавил к нему эмиттерный повторитель на биполярном транзисторе 2N3904. Выход повторителя через разделительный конденсатор подключён к ФНЧ который отсекает частоты выше 48 МГц.

29 января 2026

Апконвертер: фильтр нижних частот

Продолжаю собирать апконвертер для RTL-SDR приёмника. В прошлый раз был собран смеситель а сейчас займусь ФНЧ (Фильтр Нижних Частот) который будет стоять перед смесителем и отсекать частоты выше коротковолнового диапазона.

Выбирал между фильтром Баттерворта и Чебышева и в итоге остановился на фильтре Чебышева пятого порядка. Расчёты делал для частоты среза в 30 МГц в онлайн калькуляторе.

Для расчёта катушек индуктивности использовал другой онлайн калькулятор.

25 января 2026

Апконвертер: диодный кольцевой смеситель

Начинаю серию постов про сборку апконвертера для RTL-SDR приёмника чтобы попробовать слушать любительские коротковолновые диапазоны. Этот вариант приёмника содержит тюнер RT820T2 который может настраиваться от 24 МГц до 1766 МГц, но без переделок он сможет принимать только любительские коротковолновые диапазоны 12 метров (24890 кГц - 24990 кГц) и 10 метров (28000 кГц - 29700 кГц).

Раньше не имел дело с радиосвязью (ну кроме готовых радиопередающих модулей для Arduino) и это будет первый проект такого рода. Для начала изучил несколько аналогичных проектов на предмет схемотехники и используемых компонентов. Структурная схема апконвертера выглядит так:

Первым блоком станет смеситель, который я буду делать по схеме двойного балансного диодного кольцевого смесителя (double balanced diode ring mixer) или просто диодного кольцевого смесителя.

23 января 2026

Замена корпусного вентилятора в домашнем сервере

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

Оказалось что вентилятор, который стоит на выдув, стал сильно вибрировать и эти вибрации резонировали с корпусом (старый InWin).

Почивший вентилятор это 92 мм Xilence XPF92.R. У меня не сохранились записи когда он был куплен, но думаю несколько лет он отработал. В нём установлен гидродинамический подшипник, и наверное, это один из первых вентиляторов которые я покупал с таким типом подшипников. До этого были либо шариковые, либо подшипники скольжения.

22 января 2026

Оснастка для установки вплавляемых втулок

Очередное пополнение инструмента в домашней мастерской - оснастка для установки вплавляемых втулок с резьбами М2, М2.5, М3, М4, М5, М6 и М8. Это набор предназначен для 900-х паяльников от станций вроде моей Lukey 936A. Это полностью аналоговая, но надёжная паяльная станция пылится с момента покупки новой станции на C245 жалах, хотя недавно пришлось её доставать для ремонта новой станции.

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

Сами вплавляемые втулки выглядят так (у меня вариант для резьбы М3)

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

20 января 2026

Poetry всегда использует системный python

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

poetry env use python3.13
Recreating virtualenv app in /home/runner/work/app/app/.venv
Using virtualenv: /home/runner/work/app/app/.venv
poetry install --with dev

Current Python version (3.12.3) is not allowed by the project (>=3.13,<3.14).
Please change python executable via the "env use" command.

Проект использует poetry 2.1.1 которая не самая свежая (последняя это 2.2.1), но и не слишком древняя. При этом выше по логу видна установка python 3.13.11 и он вызывается без проблем если выполнить python3.13 --version.

18 января 2026

Выключение индикаторов TP-Link RE365 V1 по расписанию

В родной прошивке TP-Link RE365 V1 есть функция установки расписания выключения индикаторов. Это удобно, т.к. они синего цвета и довольно яркие. Если проснуться ночью, то они неплохо освещают стену где установлена точка доступа. В какой-то момент производители электроники влюбились в синие индикаторы, но не все из них дают возможность отключить их на ночь.

В OpenWrt расписание делается несложно - сначала зашёл через SSH и посмотрел что есть в /sys/class/leds

$ ls /sys/class/leds/
blue:indicator  blue:lan        blue:power      blue:wlan-2     blue:wlan-5     mt76-phy0       mt76-phy1       red:indicator

Соответствие индикаторов на корпусе внутренним именам в Linux:

  • Ethernet (blue:lan)
  • 2.4GHz (blue-wlan2)
  • 5GHz (blue:wlan-5)
  • Power (blue:power)

Написал скрипт /root/wifi-leds, который умеет включать и выключать все индикаторы

16 января 2026

Проверка радиодеталей осциллографом

Давно хотел собрать упрощённую схему проверки радиодеталей с помощью осциллографа. Полная версия есть в книге "Осциллограф - ваш помощник (приставки к осциллографу)", Иванов, 1991 г. 

Проверяемый компонент подключается к клеммам "+" и "-". Трансформатор выдаёт переменное напряжение около 12 В. Сопротивление R1 ограничивает максимальный ток через проверяемый компонент в районе 1,7 мА, но нужно иметь ввиду что несмотря на ограничение тока, некоторые компоненты может пробить обратным напряжением (в моём случае оно изменяется от -17 В до 17 В).

13 января 2026

Сделать дамп кучи и потоков для Java приложения

Сделать дамп кучи и потоков для Java приложения в Kubernetes

$ JVM_PID=1
$ JVM_POD=some-pod

$ kubectl exec $JVM_POD -- /bin/sh -c "jmap -dump:live,format=b,file=/tmp/heap-dump.hprof $JVM_PID; gzip /tmp/heap-dump.hprof"

$ kubectl cp $JVM_POD:/tmp/heap-dump.hprof.gz $PWD/heap-dump.hprof.gz

$ gunzip $PWD/heap-dump.hprof.gz

$ kubectl exec $JVM_POD -- rm /tmp/heap-dump.hprof.gz

Посмотреть состояние можно через VisualVM.


Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

12 января 2026

Калибровочные эталоны для BNC

Сделал себе набор калибровочных эталонов (разомкнутая цепь, короткое замыкание и нагрузка) для разъёмов BNC чтобы калибровать NanoVNA когда к нему подключены переходники SMA-BNC.

До их появления использовал дополнительный переходник с BNC на SMA чтобы калибровать эталонами из комплекта NanoVNA.

Из-за дополнительного переходника точность такой калибровки была хуже, чем если использовать стандарты для разъёмов BNC.

Эталон разомкнутой цепи сделать легко - достаточно откусить выступающую часть центрального контакта чтобы он был на одном уровне с корпусом разъёма.

09 января 2026

Проходной терминатор 50 Ом

Если осциллограф не поддерживает установку входного импеданса 50 Ом, то нужно использовать терминатор чтобы сохранить форму сигнала. Мой осциллограф как раз из таких и я использовал в качестве терминатора нагрузку 50 Ом из набора NanoVNA подключённую через Т-образный переходник.

Это не самое удобное подключение, т.к. либо перекрывает соседний вход, либо нужно отклонять на 45° чтобы использовать соседний вход. К тому же я встречал информацию что использование Т-образного переходника не решает проблему согласования импеданса.

Производители осциллографов предлагают специализированные адаптеры (feed-through termination) на 50 Ом (например Rigol ADP0150BNC) и я заказал аналогичный вариант из Китая, но он ещё даже не отправлен, а дальше около месяца ожидания.

А пока жду решил собрать самодельный проходной терминатор на 50 Ом. За основу взял разъёмы из дешёвых переходников

06 января 2026

Источник тока на JFET транзисторе

Посмотрел видео про токоограничивающие диоды (constant-current diode) и решил собрать их аналог на JFET транзисторе. В наличии у меня их не было и с покупкой возникли определённые затруднения т.к. в каталогах они идут вперемешку с MOSFET транзисторами. Популярные наименования JFET транзисторов я не нашёл в продаже, а просматривать даташиты подряд быстро надоело.

Закинул наименования FET транзисторов (JFET + MOSFET) из прайса магазина в ChatGPT и попросил отобрать из них только JFET. Результирующий список был с ошибками, но просмотреть десяток даташитов гораздо проще чем полный список. В итоге взял на пробу десяток транзисторов 2SK246-GR производства Toshiba.

Тестер правильно определил тип транзистора, но вот характеристики показывает странные (что нередко для этого тестера). Чтобы узнать какой максимальный ток Idss проводит транзистор нужно соединить его затвор с истоком. В моём случае в наборе из 10 транзисторов разброс значений Idss получился от 4 до 4,5 мА.

05 января 2026

Выключается WiFi из-за радара

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

Точка доступа была настроена на 52 канал (5260 МГц) на котором работает DFS (Dynamic Frequency Selection или динамический выбор частоты). DFS работает на диапазоне 5 ГГц для каналов с 52 по 140 слушая эфир и уступая частоту радару если его сигнал будет обнаружен.

hostapd: phy0-ap0: DFS-RADAR-DETECTED freq=5260 ht_enabled=0 chan_offset=0 chan_width=3 cf1=5290 cf2=0
hostapd: dfs_downgrade_bandwidth: no DFS channels left, waiting for NOP to finish
hostapd: phy0-ap0: AP-DISABLED

Попробовал перенастроить её на 100 канал (5500 МГц), но вскоре она уловила сигнал радара и там.

04 января 2026

Установка OpenWrt на TP-Link RE305 v3

Обновлял OpenWrt до версии 24.10.5 и перевёл последнюю WiFi точку доступа в домашней сети на эту прошивку. Последняя версия прошивки для TP-Link RE305 v3 вышла ещё в 2021 году и с тех пор устройство не поддерживаются производителем. Важно учитывать ревизию устройства, т.к. актуальная ревизия V4 внешне не отличается от V3 но не поддерживается в OpenWrt.

Установка OpenWrt возможно из интерфейса родной прошивки:

  • скачать файл прошивки openwrt-24.10.5-ramips-mt76x8-tplink_re305-v3-squashfs-factory.bin
  • на всякий случай проверить его контрольную сумму
  • сделать сброс на заводские настройки (зажать Reset на 10 секунд)
  • зайти на http://192.168.0.254/ и через штатное обновление установить OpenWrt (важно чтобы файл прошивки был с суффиксом factory, а не sysupgrade)

01 января 2026

Заглушка слота SD для Dell Latitude E7x70

В моём Dell Latitude E7470 при покупке отсутствовала заглушка слота для SD (Secure Digital) карт. Тогда я поставил в него адаптер который был в комплекте с micro-SD картой и так оно просуществовало довольно долго.

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

Во втором ноутбуке есть оригинальная заглушка (p/n K1D9J) и с неё снимал размеры. Чтобы заглушка легко вставлялась и не торчала из корпуса получилось не с первой попытки, но результатом я доволен.