Jump to content
XPEnology Community

Search the Community

Showing results for tags 'usb to serial'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Information
    • Readers News & Rumours
    • Information and Feedback
    • The Noob Lounge
  • XPEnology Project
    • F.A.Q - START HERE
    • Loader Releases & Extras
    • DSM Updates Reporting
    • Developer Discussion Room
    • Tutorials and Guides
    • DSM Installation
    • DSM Post-Installation
    • Packages & DSM Features
    • General Questions
    • Hardware Modding
    • Software Modding
    • Miscellaneous
  • International
    • РУССКИЙ
    • FRANÇAIS
    • GERMAN
    • SPANISH
    • ITALIAN
    • KOREAN

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me

Found 1 result

  1. Есть у меня старенький UPS Powercom IMP-425AP. Давно хотел его подключить к Synology, но дело осложнялось тем, что он является устройством типа USB to Serial, и официально не поддерживается. В интернете гуглится статья на эту тему, по адресу: https://forum.synology.com/enu/viewtopic.php?f=39&t=17658 Но статья давно устарела, т.к. там идёт речь о DSM 3.0-1337 Сразу предупреждаю, я не очень "грамотный" пользователь *nux систем, но, собрав по крупицам некоторую информацию, я всё же смог подключить свой UPS Powercom IMP-425AP к DSM 6.1-15047 Может, я где-то допустил ошибки, но и итоге всё работает. Надеюсь мой опыт будет кому-то полезен. И так, наш UPS в системе определяется как: Bus 002 Device 004: ID 0d9f:0002 Powercom Co., Ltd Black Knight PRO / WOW Uninterruptible Power Supply (Cypress HID->COM RS232) (С таким ID 0d9f:0002 есть целая серия старых IMP-*25AP) Для DSM 6.1-15047 я использую загрузчик Jun's Loader v1.02b Вначале мы воспользуемся советами, описанными в этой статье: https://xpenology.com/forum/topic/7187-how-to-build-and-inject-missing-drivers-in-jun-loader-102a/ Качаем исходный код ядра: https://sourceforge.net/projects/dsgpl/files/Synology%20NAS%20GPL%20Source/15047branch/bromolow-source/linux-3.10.x.txz/download Synology 3615xs построен на архитектуре bromolow, нам нужна версия 15047 (я использую эту версию, т.к. в ней работает нужный мне VirtualBox) Устанавливаем плагин debian-chroot ( https://synocommunity.com/package/debian-chroot ) из раздела сообщества. Запускаем chroot: /var/packages/debian-chroot/scripts/start-stop-status chroot Ставим пакеты apt-get update apt-get upgrade apt-get install locales dpkg-reconfigure locales dpkg-reconfigure tzdata apt-get install mc make gcc build-essential kernel-wedge libncurses5 libncurses5-dev libelf-dev binutils-dev kexec-tools makedumpfile fakeroot linux-kernel* lzma Создаём рабочий каталог «/volume1/@appstore/debian-chroot/var/chroottarget/test/» Распаковываем в каталог /volume1/@appstore/debian-chroot/var/chroottarget/test/ исходники ядра linux-3.10.x.txz Заходим в каталог linux-3.10.x и запускаем cp synoconfigs/bromolow .config Делаем резервную копию конфигурации make ARCH="x86_64" oldconfig Настраиваем конфигурацию make ARCH="x86_64" menuconfig Выбираем «М» напротив драйвера Device Drivers/USB support/USB Serial Converter support/USB Cypress M8 USB Serial Driver Сохраняем конфигурацию и компилируем модули make ARCH="x86_64" modules Копируем скомпилированные модули cypress_m8.ko, usbcore.ko, usbserial.ko в рабочий каталог synology /lib/modules/ Не забываем проверять/выставлять права файлам: chmod 644 Дальше переходим к работе с пакетом NUT. Это нужно, чтобы скомпилировать модуль powercom Информацию по исправлению драйвера я нашёл тут: http://forum.pcm.ru/viewtopic.php?f=3&t=2627 Качаем исходники NUT 2.4.1 http://pkgs.fedoraproject.org/repo/extras/nut/nut-2.4.1.tar.gz/609ebaf2123fc7171d25a6c742dd7d66/nut-2.4.1.tar.gz Распаковываем их в каталог /volume1/@appstore/debian-chroot/var/chroottarget/test/ В каталоге /volume1/@appstore/debian-chroot/var/chroottarget/test/nut-2.4.1 создаём файл патча «patch-nut» с содержимым: --- drivers/powercom.c 2009-02-17 12:20:48.000000000 +0300 +++ drivers/powercom.c 2010-03-02 15:48:25.354735038 +0300 @@ -852,21 +852,30 @@ /* setup flow control */ types[type].flowControl.setup_flow_control(); - if (!strncmp(types[type].name, "BNT",3) || !strcmp(types[type].name, "KIN") || !strcmp(types[type].name, "IMP")){ + if (getval("type") == NULL){ if (!ups_getinfo()) return; if (raw_data[UPSVERSION]==0xFF){ types[type].name="IMP"; - model=IMPmodels[raw_data[MODELNUMBER]/16]; } if (raw_data[MODELNAME]==0x42){ if (!strcmp(types[type].name, "BNT-other")) types[type].name="BNT-other"; else types[type].name="BNT"; - model=BNTmodels[raw_data[MODELNUMBER]/16]; } if (raw_data[MODELNAME]==0x4B){ types[type].name="KIN"; + } + } + if (!strncmp(types[type].name, "BNT",3) || !strcmp(types[type].name, "KIN") || !strcmp(types[type].name, "IMP")){ + if (!ups_getinfo()) return; + if (!strcmp(types[type].name, "IMP")){ + model=IMPmodels[raw_data[MODELNUMBER]/16]; + } + if (!strncmp(types[type].name, "BNT",3)){ + model=BNTmodels[raw_data[MODELNUMBER]/16]; + } + if (!strcmp(types[type].name, "KIN")){ model=KINmodels[raw_data[MODELNUMBER]/16]; } linevoltage=voltages[raw_data[MODELNUMBER]%16]; Применяем патч: patch -p0 -l <patch-nut В драйвере powercom по умолчанию включена самопроверка батарей при каждом старте драйвера. Настройки или возможности отключения этой проверки – нет. Метод устранения этой особенности я подсмотрел здесь: http://forum.lissyara.su/viewtopic.php?t=17735&start=25 Если Вам это не актуально, можете данный шаг пропустить. В файле: /volume1/@appstore/debian-chroot/var/chroottarget/test/nut-2.4.1/drivers/powercom.c находим строчки: ... upsdebugx(1,"Detected: %s , %dV",modelname,linevoltage); if (ser_send_char (upsfd, BATTERY_TEST) != 1) { upslogx(LOG_NOTICE, "writing error"); dstate_datastale(); return; } ... и комментируем лишнее: ... upsdebugx(1,"Detected: %s , %dV",modelname,linevoltage); /*if (ser_send_char (upsfd, BATTERY_TEST) != 1) { upslogx(LOG_NOTICE, "writing error"); dstate_datastale(); return; }*/ ... Компилируем NUT (пути для конфигов и т.д. выставляем такие же, как у synology): ./configure --with-user=root --with-group=root --prefix=/usr/syno/etc/ups --sysconfdir=/usr/syno/etc/ups --datadir=/usr/syno/share make Копируем скомпилированный файл powercom из каталога /volume1/@appstore/debian-chroot/var/chroottarget/test/nut-2.4.1/drivers/ в рабочий каталог synology /bin Не забываем проверять/выставлять права файлам: chmod 644 Теперь нужно добавить скомпилированные драйвера, в загрузчик Jun's Loader v1.02b. Используем osfmount (под windows), чтобы извлечь «extra.lzma» (сжатый файл cpio) из synoboot.img (находится «extra.lzma» на втором разделе FAT). Osfmount часто используют для редактирования файла grub.cfg в synoboot.img. («extra.lzma» - содержит дополнительные драйвера *.ko, которые стартуют при загрузке) Скопируем «extra.lzma» в /volume1/@appstore/debian-chroot/var/chroottarget/test/extra-drv Для распаковки «extra.lzma» выполним команду: lzma -d extra.lzma Далее, извлекаем файлы из «extra»: cpio -idv <extra После чего файл «extra.lzma» можно удалить. В распакованный каталог …/usr/lib/modules/ копируем скомпилированные модули cypress_m8.ko, usbcore.ko, usbserial.ko, а в /etc редактируем файл rc.modules В конце списка EXTRA_MODULES добавляем свои три драйвера, без *.ko rc.modules выглядит примерно так: EXTRA_MODULES="mii mdio libphy atl1 atl1e atl1c alx uio ipg jme skge sky2 ptp_pch pch_gbe qla3xxx qlcnic qlge netxen_nic sfc e1000 pcnet32 vmxnet3 bnx2 libcrc32c bnx2x cnic e1000e igb ixgbe r8101 r8168 r8169 tg3 usbnet ax88179_178a button evdev ohci-hcd cypress_m8 usbcore usbserial" DISK_MODULES="BusLogic vmw_pvscsi megaraid_mm megaraid_mbox megaraid scsi_transport_spi mptbase mptscsih mptspi mptsas mptctl ata_piix megaraid_sas mpt2sas mpt3sas" EXTRA_FIRMWARES="bnx2/bnx2-rv2p-09ax-6.0.17.fw bnx2/bnx2-rv2p-09-6.0.17.fw bnx2/bnx2-rv2p-06-6.0.15.fw tigon/tg3_tso5.bin tigon/tg3_tso.bin tigon/tg3.bin" Дальше, внутри каталога, /volume1/@appstore/debian-chroot/var/chroottarget/test/extra-drv, создаём новый файл cpio, и сжимаем его lzma. Полученный, новый «extra.lzma» записывается в каталог уровнем выше. Выполняем команду: (find . -name modprobe && find . \! -name modprobe) | cpio --owner root:root -oH newc | lzma -8 > ../extra.lzma Полученный файл «extra.lzma», при помощи osfmount, записываем обратно в образ synoboot.img. Теперь произведём настройку DSM 6.1 Выполняем: insmod /lib/modules/cypress_m8.ko mknod /dev/ttyUSB0 c 188 0 chmod 644 /dev/ttyUSB0 Настраиваем скорость порта: stty -F /dev/ttyUSB0 speed 1200 cs8 raw (Дальнейшая настройка подсмотрена тут: https://xpenology.com/forum/topic/4413-dsm-52-5592-update-4-amp-serial-apc-ups/#comment-38621) Редактируем файл: /etc/rc Добавляем в KERNEL_MODULES драйвера «usblp cypress_m8 usbserial»: if [ $KERNEL_VCODE -ge $(KernelVersionCode "4.4") ]; then KERNEL_MODULES="usblp cypress_m8 usbserial llc p8022 psnap usbcore quota_tree quota_v2 crc-ccitt crc-itu-t zlib_inflate dm-bufio dm-snapshot" else KERNEL_MODULES="usblp cypress_m8 usbserial llc p8022 psnap usbcore quota_tree quota_v2 crc-ccitt crc-itu-t zlib_inflate dm-snapshot" fi В конце файла, перед exit 0 добавляем строку запуска службы UPS: /usr/syno/etc/rc.sysv/ups-usb.sh start В файле /usr/syno/etc/rc.sysv/ups-usb.sh правим строку StartAllDrv() { local DRV_LIST="usbhid-ups blazer_usb bcmxcp_usb richcomm_usb tripplite_usb" на StartAllDrv() { local DRV_LIST="powercom usbhid-ups blazer_usb bcmxcp_usb richcomm_usb tripplite_usb" Редактируем файл /usr/syno/etc/ups/ups.conf [ups] driver = powercom port = /dev/ttyUSB0 type = IMP Загружаем файл https://github.com/networkupstools/nut/raw/master/data/cmdvartab и копируем его в каталог /usr/syno/share/ На этом всё. После перезагрузки, UPS должен автоматически появиться в GUI: P.S. Посмотреть более подробный статус UPS можно командой: upsc ups admin@serv01:~$ upsc ups battery.charge: 100.0 driver.name: powercom driver.parameter.pollinterval: 5 driver.parameter.port: /dev/ttyUSB0 driver.parameter.type: IMP driver.version: 2.4.1 driver.version.internal: 0.12 input.frequency: 50.00 input.voltage: 226.0 input.voltage.nominal: 220 output.frequency: 50.00 output.voltage: 226.0 ups.load: 12.0 ups.mfr: PowerCom ups.model: IMP-425AP ups.model.type: IMP ups.serial: Unknown ups.status: OL
×
×
  • Create New...