понедельник, 31 августа 2020 г.

Привязать USB устройство к конкретному ttyUSB в Linux

Это делается через настройку udev.

1) Создаем новое правило udev:

    vim /etc/udev/rules.d/91-myrule.rule

2) По сути для того, чтобы создать стабильный алиас для устройства достаточно одной строки:

 ACTION=="add",ENV{ID_BUS}=="usb",ENV{ID_SERIAL}=="usb_serial",SYMLINK+="ttyUSBPort4"

ttyUSPPort4 - это будущее имя устройства, оно, как и все, будет в /dev/

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

цитируя udev wiki: "To get definitive information of the device you can use either ID_SERIAL or ID_SERIAL_SHORT". Так что на самом деле для идентификации годятся 2 параметра.

Посмотреть их можно так:

udevadm info /dev/ttyUSBX - где X номер вашего устройства.

Если какой у него сейчас номер тоже не известно - вот способ его определить:

делаем lsusb, видим список всех устройств и их usb_serial

Потом грепаем по очереди все ttyUSB

grep PRODUCT= /sys/bus/usb-serial/devices/ttyUSB1/../uevent

и смотрим, какой serial к какому устройству относится.

среда, 15 января 2020 г.

Осиротевшее обновление debian

Посередине обновления debian сдохла связь, а screen я запустить забыл и процесс завис:
1) Проверяем:
  aptitude

Будет ошибка вида: Could not get lock /var/lib/dpkg/lock

2) Ищем процесс
  ps aux | grep -i apt

..........
  root     13114  3.0  5.9 103704 62592 ?        S     2019 15:10 apt-get upgrade
..........

3) Переключиться на этот процесс не получилось, убиваем его:
  kill -9 13114

4) Теперь система знает, dpkg прервали, запускаем:
  dpkg --configure -a

5) Теперь все работает, перезапускаем апгрейд
apt-get upgrade

понедельник, 20 июля 2015 г.

Восстановить пароль администратора ZTE F660

Случилась у товарища тут беда - потерялся пароль от веб-морды роутра. А лезть к нему физически и сбрасывать было сильно тяжело по самым обычным причинам - он был заперт за шкафом. Пришлось искать решение. И оно таки нашлось:
Самый простой вариант - сбросить его вместе с настройками, просто зайдя на:

  1. http://192.168.1.1/hidden_version_switch.gch - при смене сбрасывается пароль
Правда, использование этого способа может отключить вам телефон, пока вы не вернете нормальную версию языка на место. Но вы же все равно не собирались оставлять себе китайский? =)
  1. http://192.168.1.1/manager_dev_conf_t.gch - при сбросе настроек - сбросится и пароль
Больше информации можно накопать тут:

четверг, 19 февраля 2015 г.

Php 5.5 & Apache 2.4

Апач ставлю из репозитариев, пхп собирается из сорцов.

Настраиваем конфигурацию пхп, указываем путь к apsx2. Для этого нужно установить apache2-dev.
Компилим пхп, ставим его.

После  установки может появиться ошибка: Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
Тогда надо скомпилить пхп с --enable-maintainer-zts или поставить апачу mpm_prefork

make install добавит загрузку модуля пхп к апачу ( mods-available/php5.load )
Остается только добавить SetHandler

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

В Апаче 2.4  реализована загрузка модулей путем подгрузки всех файлов из /etc/apache2/mods-enable
Добаляются они туда из mos-available с помощью команд a2enmods. Создаем для модуля php5  конфиг файл (mods-available/php5.conf) и добавляем туда SetHandler.
выклчаем/включаем модуль, файл конфига копируется в mods-enable. Осталось рперезагрузить Апач: 
service apache2 restart


среда, 2 апреля 2014 г.

PHP extension на с++

По умолчанию extension создается для компиляции с-компилятором. Для переключения на с++ есть такой вариант:
1)vim config.m4
2) в блок if test "$PHP_GT_TEST" != "no"; then
  добавить:
  PHP_REQUIRE_CXX()
  PHP_SUBST(GT_TEST_SHARED_LIBADD)
  PHP_ADD_LIBRARY(stdc++, 1, GT_TEST_SHARED_LIBADD)
3) В PHP_NEW_EXTENSION(ext, ext.c, $ext_shared)
поменять ext.c => ext.cc
4) phpize

Создать php extension в unix

Шаги:
1) cd /path_to_php_src/ext
2) ./ext_skel --extname=name
3) cd name
4) vim config.m4, там убрать dnl со строк:
dnl PHP_ARG_ENABLE(gt_test, whether to enable gt_test support,
dnl Make sure that the comment is aligned:
dnl [  --enable-gt_test           Enable gt_test support])
или со строк
dnl PHP_ARG_WITH(gt_test, for gt_test support,
dnl Make sure that the comment is aligned:
dnl [  --with-gt_test             Include gt_test support])
5) phpize
6) ./configure && make && make install

понедельник, 31 марта 2014 г.

Немного установки php

  Configuration File (php.ini) Path => /etc/php5/apache2
  Loaded configuration file => (none)

Если php в упор не видит свой ini file, хотя при компиляции ему ясно указали
  --with-config-file-path=/etc/php5/php.ini
то все просто, надо указывать папку, а не сам файл. Как-то так:
  --with-config-file-path=/etc/php5
и тогда он сам найдет там php.ini