23 августа 2020

Черный экран при выходе из hibernate

Иногда после выхода из спящего режима нет изображения на экране ноутбука. Чаще это случается если ноутбук ушел в спящий режим подключенным к док-станции (в этом случае изображение выводится на два внешних монитора, а экран ноутбука отключен), а выходит из спящего режима будучи отключенным от док-станции. В такой момент можно подключиться по SSH и сделать перезагрузку или попытаться переключиться в консоль и затем обратно в иксы. Иногда последнее помогает, но не всегда. Не помню конда это началось, но из-за нехватки времени и спонтанности ошибки решение откладывалось до лучших времен. Сегодня воспроизвелось еще раз и пора с этим разобраться.

Отключение Bluetooth и WWAN при загрузке системы

На ноутбуке есть три беспроводных устройства (wifi, bluetooth и wwan) из которых постоянно используется только wifi. Чтобы не засорять эфир остальные устройства отключались вручную после загрузки. Хотя ноутбук перезагружается редко, но делать одно и тоже руками надоедает. Скрипт, который автоматически отключает bluetooth и wwan выглядит так (/usr/local/sbin/rfkill-boot-settings.sh)

#!/bin/sh

RFKILL_TYPE="bluetooth wwan"
RFKILL_BIN=/usr/sbin/rfkill

if [ ! -x "${RFKILL_BIN}" ]; then
    echo "Error: rfkill is not installed" >&2
    exit 1
fi

# shellcheck disable=SC2086
for RFKILL_ID in $(${RFKILL_BIN} list -n -o ID ${RFKILL_TYPE})
do
    # Some devices are nested and dissapear when parent device is blocked
    if ${RFKILL_BIN} list -n -o ID | grep -Eq '^\s+'${RFKILL_ID}'$'; then
        echo "Disabling ${RFKILL_ID}"
        ${RFKILL_BIN} block ${RFKILL_ID}
    else
        echo "Skipping ${RFKILL_ID}"
    fi
done

Автоматически запускать можно из /etc/rc.local или через systemd (/etc/systemd/system/rfkill-boot-settings.service)

01 мая 2020

Xfce4 не блокирует экран при закрывании крышки ноутбука

На ноутбуке установлен Xfce4 4.14 который я пересобрал под Debian Buster. Пока в качестве реакции на закрывании крышки ноутбука был настроен hibernate - экран блокировался, но стоило перейти на suspend - экран перестал блокироваться. Если отправить ноутбук в спячку нажатием кнопки Sleep, то блокировка работает.

Полез смотреть логи, для этого запустил в терминале journalctl -f и закрыл крышку. После просыпания увидел следующие записи:

May 01 20:03:42 dragoncore systemd-logind[711]: Lid closed.
May 01 20:03:42 dragoncore systemd-logind[711]: Suspending...
May 01 20:03:42 dragoncore NetworkManager[710]:   [1588352622.0356] manager: sleep: sleep requested (sleeping: no  enabled: yes)
May 01 20:03:42 dragoncore NetworkManager[710]:   [1588352622.0356] manager: NetworkManager state is now ASLEEP
May 01 20:03:42 dragoncore systemd[1]: Reached target Sleep.
May 01 20:03:42 dragoncore systemd[1]: Starting Suspend...
May 01 20:03:42 dragoncore systemd-sleep[2418]: Suspending system...
May 01 20:03:42 dragoncore kernel: PM: suspend entry (deep)
May 01 20:03:42 dragoncore kernel: PM: Syncing filesystems ... done.

Значит событие закрывания крышки ноутбука обработал logind, а не xfce4-power-manager.

31 марта 2020

Собрал пакет для acme.sh версии 2.8.5

Версия 2.8.5 вышла еще в январе, но обновить пакет в моем репозитарии руки дошли только вчера. Последняя версия добавлена в репозитарий только для Debian Buster и Debian Sid, но пакет acme.sh_2.8.5-1_all.deb должен устанавливаться на другие версии Debian/Ubuntu без проблем.

Из заметных изменений:
  • Добавил страницу man для acme.sh
  • Исправил предупреждения lintian
  • Поменял структуру для deploy/dnsapi/notify хуков - есть подозрение что в предыдущих релизах они не работали, но протестировать их мне не довелось

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

29 марта 2020

Конфигурация сенсоров в arduino-air-sensors

Сделал обновление для моего проекта arduino-air-sensors - теперь есть возможность настраивать конфигурацию плат с контроллерами esp8266. Последняя ревизия кода поддерживает сенсоры DHT22/AM2302, BME280, SI7021, MH-Z19 и OLED экран на базе контроллера SSD1306.

Прошивку тестировал на платах ESP01 и ESP12S - получились такие конфигурации:
  • ESP01 + SI7021 (SI7021 подключен к GPIO0/GPIO2)
  • ESP01 + BME280 (BME280 подключен к GPIO0/GPIO2)
  • ESP12F + DHT22 + MH-Z19 + SSD1306 (SSD1306 подключен к GPIO4/GPIO5, DHT22 к GPIO14, a MH-Z19 к GPIO15/GPIO13).
В последней конфигурации используется переключение UART0 с GPIO1/GPIO3 на  GPIO15/GPIO13. До этого пробовал использовать библиотеку SoftwareSerial но работает она нестабильно.

Еще заказал на пробу AHT10 - это датчик температуры и влажности для шины I2C.

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

18 марта 2020

Обновление OpenWrt на TP-Link Archer C6

В начале марта вышло обновление OpenWrt (список изменений в 19.07.2). Для обновления прошивки предлагается два способа:
  1. Web интерфейс LUCI 
  2. Командная строка
Для себя я выбрал вариант с обновлением через командную строку

# export OPENWRT_RELEASE=19.07.2

# cd /tmp

# wget http://downloads.openwrt.org/releases/${OPENWRT_RELEASE}/targets/ath79/generic/openwrt-${OPENWRT_RELEASE}-ath79-generic-tplink_archer-c6-v2-squashfs-sysupgrade.bin

Downloading 'http://downloads.openwrt.org/releases/19.07.2/targets/ath79/generic/openwrt-19.07.2-ath79-generic-tplink_archer-c6-v2-squashfs-sysupgrade.bin'
Connecting to 176.9.48.73:80
Writing to 'openwrt-19.07.2-ath79-generic-tplink_archer-c6-v2-squashfs-sysupgrade.bin'
openwrt-19.07.2-ath7 100% |*******************************|  4544k  0:00:00 ETA
Download completed (4653342 bytes)

# wget http://downloads.openwrt.org/releases/${OPENWRT_RELEASE}/targets/ath79/generic/sha256sums

Downloading 'http://downloads.openwrt.org/releases/19.07.2/targets/ath79/generic/sha256sums'
Connecting to 176.9.48.73:80
Writing to 'sha256sums'
sha256sums           100% |*******************************|   140k  0:00:00 ETA
Download completed (143764 bytes)

# sha256sum -c sha256sums 2>/dev/null | grep OK

openwrt-19.07.2-ath79-generic-tplink_archer-c6-v2-squashfs-sysupgrade.bin: OK

# sysupgrade -v /tmp/openwrt-${OPENWRT_RELEASE}-ath79-generic-tplink_archer-c6-v2-squashfs-sysupgrade.bin

Saving config files...
etc/config/dhcp
etc/config/dropbear
etc/config/firewall
etc/config/luci
etc/config/network
etc/config/rpcd
etc/config/system
etc/config/ubootenv
etc/config/ucitrack
etc/config/uhttpd
etc/config/wireless
etc/dropbear/dropbear_rsa_host_key
etc/group
etc/hosts
etc/inittab
etc/luci-uploads/.placeholder
etc/opkg/keys/0b26f36ae0f4106d
etc/opkg/keys/1035ac73cc4e59e3
etc/opkg/keys/5151f69420c3f508
etc/opkg/keys/72a57f2191b211e0
etc/opkg/keys/792d9d9b39f180dc
etc/opkg/keys/9ef4694208102c43
etc/opkg/keys/b2d571e0880ff617
etc/opkg/keys/b5043e70f9a75cde
etc/opkg/keys/c10b9afab19ee428
etc/opkg/keys/dace9d4df16896bf
etc/opkg/keys/dd6de0d06bbd3d85
etc/opkg/keys/f94b9dd6febac963
etc/passwd
etc/profile
etc/rc.local
etc/shadow
etc/shells
etc/sysctl.conf
Commencing upgrade. Closing all shell sessions.

Через несколько минут обновление прошики закончилось.

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

20 февраля 2020

Установка OpenWrt на TP-Link Archer C6 v2

Какое-то время назад я обновил wifi точку доступа TP-Link TL-WA901ND на роутер TP-Link Archer C6(RU) v2 ради поддержки диапазона 5GHz. Примерно месяц я пользовался роутером на штатной прошивке в режиме точки доступа - скорость по 5GHz отличная, в диапазоне 2.4GHz тоже соответствует ожиданиям. В принципе можно было и дальше пользоваться этой прошивкой, но не было возможности отключить режим WPS и с отключенным DHCP сервером не показывало список подключенных клиентов.

После выхода релиза OpenWrt 19.07.0 решил попробовать альтернативную прошивку. Инструкция по обновлению прошивки на английском языке есть на сайте OpenWrt. Обновить прошивку из web интерфейса штатной прошивки не получилось. Пришлось делать установку через метод TFTP.