5 заметок с тегом

linux

Подключаем Dadget CO2 к серваку

  1. Сначала сделаем чтобы любой пользователь мог обращаться к устройству
    создаем /etc/udev/rules.d/10-co2mon.rules
    с содержимым
ACTION=="add|change", SUBSYSTEMS=="usb", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="a052", MODE:="0666"

щелкаем

udevadm control --reload
udevadm trigger

проверяем что /dev/usb/hiddev0 теперь crw-rw-rw-

  1. Подключаем библиотечку PyUSB hid. PyUSB глючное говно вызывающее странные эффекты, например пропадение устройства hiddev0.
    pip3 install hid (или hidapi уже не помню, это гуглится)
  1. Читаем (алгоритм расшифровки передрал с сишного проекта co2mod)
#!/usr/bin/env python3

import hid
import time

def decode_co(data):
    # кручу-верчу
    data[0], data[2] = data[2], data[0]
    data[1], data[4] = data[4], data[1]
    data[3], data[7] = data[7], data[3]
    data[5], data[6] = data[6], data[5]
    
    result = bytearray(8)

    # всех обмануть хочу
    result[7] = ((data[6] << 5) & 0xFF) | ((data[7] >> 3) & 0xFF)
    result[6] = ((data[5] << 5) & 0xFF) | ((data[6] >> 3) & 0xFF)
    result[5] = ((data[4] << 5) & 0xFF) | ((data[5] >> 3) & 0xFF)
    result[4] = ((data[3] << 5) & 0xFF) | ((data[4] >> 3) & 0xFF)
    result[3] = ((data[2] << 5) & 0xFF) | ((data[3] >> 3) & 0xFF)
    result[2] = ((data[1] << 5) & 0xFF) | ((data[2] >> 3) & 0xFF)
    result[1] = ((data[0] << 5) & 0xFF) | ((data[1] >> 3) & 0xFF)
    result[0] = ((data[7] << 5) & 0xFF) | ((data[0] >> 3) & 0xFF)
    
    magic_word = b'Htemp99e'
    for i in range(8):
        r = ((magic_word[i] << 4) & 0xFF) | ((magic_word[i] >> 4) & 0xFF)
        if result[i] < r:
            result[i] = 0xFF - r + result[i]
        else:
            result[i] = result[i] - r

    # не знаю почему, но у меня проверка чек-суммы никогда не сходилась    
    #if result[0]+result[1]+result[2] != result[3]:
    #    return 0

    res = (result[1] << 8) + result[2]

    if result[0] == 0x42:
        print("T={0}".format(res * 0.0625 - 273.15))
        return 1
    elif result[0] == 0x50:
        print("CO={0}".format(res))
        return 2
    return 0
    
try:
    h = hid.device()
    h.open(0x04d9, 0xa052)

    # хз, не вникал
    h.set_nonblocking(1)

    # по идее это отправка некой magic_table которой шифруется ответ, но и без любой из этих строк работает
    #h.write(b'8\x00\x00\x00\x00\x00\x00\x00\x00')
    h.send_feature_report([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])
    time.sleep(0.05)

    co = 1
    t = 1
    while co | t:
        d = h.read(8)
        if d:
            n = decode_co(d)
            if n == 1:
                t = 0
            elif n == 2:
                co = 0

    h.close()

except IOError as ex:
    print(ex)
4 мес   co2   dadget   driver   linux   python   программирование

Ааааблакаааааа

Надоело мне платить по 100$ за дропбокс и решил я свое облако сделать.

На сервак ставится ownCloud (https://linuxhostsupport.com/blog/how-to-install-owncloud-10-on-debian-9/)

Ему понадобится
apache2 mysql-server php-apcu php-apcu-bc php-common php-igbinary php-imagick php-memcached php-msgpack php-redis php-smbclient php-ssh2 php7.0 php7.0-cli php7.0-common php7.0-curl php7.0-gd php7.0-imap php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-pgsql php7.0-pspell php7.0-readline php7.0-recode php7.0-tidy php7.0-xml php7.0-xmlrpc php7.0-xsl php7.0-zip phpmyadmin php-redis redis-server apt-transport-https owncloud-files

Плюс своя база mysql, работающий redis и желательно домен с ssl.

3 дня полет нормальный.

2018   cloud   linux

BT Мышь

apt-get install bluetooth bluez bluez-tools rfkill
apt-get install bluez-firmware firmware-atheros

systemctl enable bluetooth.service
systemctl start bluetooth.service

включить пайринг на мыши (зажать все п/л кнопки и колесико на 3 секунды)
hcitool scan
узнаем мак

bluetoothctl

[bluetooth]# list
Controller MAC_адрес_контроллера BlueZ 5.5 [default]
[bluetooth]# select MAC_адрес_контроллера
[bluetooth]# power on
[bluetooth]# scan on
[bluetooth]# agent on
[bluetooth]# devices
Device MAC_адрес_мыши Name: Bluetooth Mouse
[bluetooth]# pair MAC_адрес_мыши
[bluetooth]# trust MAC_адрес_мыши
[bluetooth]# connect MAC_адрес_мыши

/etc/default/bluetooth
исправить HID2HCI_ENABLED=1

/etc/bluetooth/hcid.conf
device MAC_адрес_мыши {
name «Мегамышь»;
}

/etc/init.d/bluetooth restart

2018   linux

Debian 9.5

Продолжаю сражение с ноутбуком Dell Inspiron 3180.
Редкостное говно оказалось в плане легкости установки линуха.

В частности дебиан после установки не грузится.
Надо залезть в меню grub, дописать в строчке «linux...» после «ro» «nomodeset».
Теперь добавить в источники non-free и установить firmware-amd-graphics.

Перезагрузиться.

2018   linux   говно

Ubuntu

/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=«quiet splash elevator=noop»

update-grub

/etc/sysctl.conf
vm.swappiness = 10
vm.vfs_cache_pressure = 50

/etc/fstab
errors=remount-ro,noatime,nodiratime,commit=60,barrier=0

apt update
apt install gnome-tweak-tool gnome-tweaks exfat-fuse exfat-utils ffmpeg htop ubuntu-restricted-extras ubuntu-restricted-addons xserver-xorg-input-synaptics gimp gimp-ufraw net-tools preload prelink

В файле /etc/default/prelink
изменить строку с PRELINKING=unknown на PRELINKING=yes

запустить
/etc/cron.daily/prelink

Более правильно экстренную перезагрузку стоит проводить, зажав клавиши Alt + SysRq и с интервалом в 2-3 секунды нажать последовательно: R E I S U B

unRaw (перехватить управление клавиатурой),
tErminate (послать SIGTERM всем процессам),
kIll (послать SIGKILL всем процессам, которые не смогли завершиться предыдущей командой),
Sync (синхронизировать файловые системы),
Unmount (перемонтировать файловые системы в режим «только чтение»),
reBoot (и напоследок, совершить перезагрузку)

2018   linux