Imperial (USB) + NUT = (new) Linux solution

Обсуждение ИБП серии IMPERIAL

Moderators: AlexS, artyom, tanych

Message
Author
max
Модератор
Posts: 557
Joined: 13:10, 16 Aug 2006
Contact:

Imperial (USB) + NUT = (new) Linux solution

#1 Post by max » 16:44, 27 Jul 2007

Пока я сам не проверил но человек говорит что все работает.
Модуль для поддержки ИБП Imperial (USB) в Network UPS Tool (NUT) для Linux написан пользователем

Поддерживается последняя стабильная версия ядра: 2.6.22.1

В архиве: модуль ядра, исходник и бинарник драйвера NUT. Также пример конфигурации NUT. При загрузке модуля в системе появляется ttyUSB устройство.
В драйвере NUT использовать -x type=IMPERIAL. Для бинарника нужно что-бы conf файл лежал в /etc/nut.

Пример запуска драйвера: ./powercom -a ups -u root -DD -x type=IMPERIAL -x port=/dev/ttyUSB0

Все это писалось для IMD-525AP с Vendor=0d9f и ProdID=0002. С другими значениями Vendor и ProdID работать не будет.

Скачать http://www.pcm.ru/support/download/soft/
Network UPS Tools (NUT): http://www.networkupstools.org/

Вопросы можно писать мне, я постораюсь разобраться.
POWERCOM Moscow
MAXIM

Blake-R
Posts: 2
Joined: 22:22, 08 Nov 2007

#2 Post by Blake-R » 22:30, 08 Nov 2007

Проверено на

Code: Select all

$ uname -a
Linux bn-00 2.6.22-gentoo-r9 #1 SMP Sat Nov 3 12:52:34 MSK 2007 i686 AMD Athlon(tm) 64 X2 Dual Core Processor 6000+ AuthenticAMD GNU/Linux
Вердикт - модуль ядра нерабочий. Ещё бы, его же надо собирать под конкретное ядро, а оно ( по-умолчанию ) во всех дистрибутивах немного отличается. Лучше бы автор дал исходники как раз модуля ядра pcm_usb.ko, а не утилиты powercom ( в составе NUT она, кстати говоря, есть, но автор дописал туда распознавание типа UPS IMPERIAL ).

quick
Posts: 5
Joined: 18:12, 18 Oct 2007
Contact:

#3 Post by quick » 21:41, 06 Feb 2008

Лекарство :)

Code: Select all

--- linux.orig/drivers/usb/serial/cypress_m8.h	2008-01-25 00:58:37.000000000 +0200
+++ linux/drivers/usb/serial/cypress_m8.h	2008-02-06 17:07:08.000000000 +0200
@@ -19,6 +19,10 @@
 #define VENDOR_ID_CYPRESS		 0x04b4
 #define PRODUCT_ID_CYPHIDCOM		 0x5500
 
+/* Powercom UPS, chip CY7C63723 */
+#define VENDOR_ID_POWERCOM		 0x0d9f
+#define PRODUCT_ID_UPS			 0x0002
+
 /* Nokia CA-42 USB to serial cable */
 #define VENDOR_ID_DAZZLE		0x07d0
 #define PRODUCT_ID_CA42			0x4101
--- linux.orig/drivers/usb/serial/cypress_m8.c	2008-02-06 13:44:45.000000000 +0200
+++ linux/drivers/usb/serial/cypress_m8.c	2008-02-06 17:47:25.000000000 +0200
@@ -94,6 +94,7 @@
 
 static struct usb_device_id id_table_cyphidcomrs232 [] = {
 	{ USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) },
+	{ USB_DEVICE(VENDOR_ID_POWERCOM, PRODUCT_ID_UPS) },
 	{ }						/* Terminating entry */
 };
 
@@ -106,6 +107,7 @@
 	{ USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB) },
 	{ USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB_LT20) },
 	{ USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) },
+	{ USB_DEVICE(VENDOR_ID_POWERCOM, PRODUCT_ID_UPS) },
 	{ USB_DEVICE(VENDOR_ID_DAZZLE, PRODUCT_ID_CA42) },
 	{ }						/* Terminating entry */
 }; 

quick
Posts: 5
Joined: 18:12, 18 Oct 2007
Contact:

#4 Post by quick » 18:14, 12 Feb 2008

Blake-R
патч делался на 2.6.24, но это не актуально, там с 2005 года модуль не меняли. Это ж всего лишь эмуляция usb2serial, все остальное делает nut. Модуль для nut в этой теме описан, его и использовать. Данный патч заменяет только бинарный модуль usb2serial, автор которого не дал исходник, да собственно он и не нужен, ибо в ядре все было, только новый pid/vid прописать нужно было. Если модуль cypress_m8 работает нормально, то в терминалке на порту /dev/ttyUSB0 или какой там у тебя будет нажав enter будут идти в цикле 16 символов, визуально будет видно только KH, интервал примерно секунда. Если такое есть, то модуль как эмулятор сом-порта работает.

ЗЫ терминал самый простой - minicom, только порт прописать нужно(minicom -s),

Code: Select all

usbcore: registered new interface driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbserial_generic 4-1:1.0: usb_probe_interface
usbserial_generic 4-1:1.0: usb_probe_interface - got id
usbcore: registered new interface driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for DeLorme Earthmate USB
drivers/usb/serial/usb-serial.c: USB Serial support registered for HID->COM RS232 Adapter
drivers/usb/serial/usb-serial.c: USB Serial support registered for Nokia CA-42 V2 Adapter
cypress 4-1:1.0: usb_probe_interface
cypress 4-1:1.0: usb_probe_interface - got id
cypress 4-1:1.0: HID->COM RS232 Adapter converter detected
usb 4-1: HID->COM RS232 Adapter converter now attached to ttyUSB0
usbcore: registered new interface driver cypress
drivers/usb/serial/cypress_m8.c: Cypress USB to Serial Driver v1.09 
Возможно у тебя доло в udev?

Blake-R
Posts: 2
Joined: 22:22, 08 Nov 2007

#5 Post by Blake-R » 21:21, 12 Feb 2008

Первый абзац получился бесполезным, т.к. я это всё и так понял.
А вот вывод сообщений от usbcore оказался полезным - я хоть узнал, к чему стремиться. И "достремился".
Моя проблема оказалась несколько глупой: первым у меня загружается модуль usbhid для мыши. Ну, и он сразу же подхватывает Powercom как usbhid. Когда я вызывал загрузку cypress_m8 - он не находил "свободных" устройств, поэтому у меня и не появлялось устройство /dev/ttyUSBn.
Сделав загрузку cypress_m8 перед usbhid я наконец-то получил эелаемое. :P
Огромное спасибо quick за патч!

jakshi
Posts: 12
Joined: 03:00, 23 Mar 2008
Location: Харьков
Contact:

#6 Post by jakshi » 03:19, 23 Mar 2008

Попробывал реализовать данную схему, не работает :(
UPS powercom bnt-1000ap

Code: Select all

manumba ~ # lsusb
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 002: ID 0d9f:0002 Powercom Co., Ltd
наложил на cypress_m8 патч
Что бы он первым при загрузке хватал UPS вкомпилил его в ядро, а usbhid собрал модулем.

Code: Select all

manumba ~ # dmesg
usbcore: registered new interface driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for DeLorme Earthmate USB
drivers/usb/serial/usb-serial.c: USB Serial support registered for HID->COM RS232 Adapter
drivers/usb/serial/usb-serial.c: USB Serial support registered for Nokia CA-42 V2 Adapter
cypress 4-2:1.0: HID->COM RS232 Adapter converter detected
usb 4-2: HID->COM RS232 Adapter converter now attached to ttyUSB0
usbcore: registered new interface driver cypress
drivers/usb/serial/cypress_m8.c: Cypress USB to Serial Driver v1.09
появилось устройство /dev/ttyUSB0

Только вот 16 байт эти самые по нему не идут :(
minicom -s
в настройках указываю это устройство - пустота
cat /dev/ttyUSB0
пусто

Code: Select all

manumba ~ # /etc/init.d/upsdrv start
 * Starting UPS drivers ...
Network UPS Tools - UPS driver controller 2.2.1
Network UPS Tools - PowerCom and similars protocol UPS driver $ Revision: 0.5 $ (2.2.1)

data receiving error (-1 instead of 16 bytes) 
Если кто что может подсказать, буду благодарен.

jakshi
Posts: 12
Joined: 03:00, 23 Mar 2008
Location: Харьков
Contact:

#7 Post by jakshi » 04:49, 25 Mar 2008

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

jakshi
Posts: 12
Joined: 03:00, 23 Mar 2008
Location: Харьков
Contact:

#8 Post by jakshi » 15:10, 17 Apr 2008

Хорошая новость.
Поддержка com to usb hid для ups powercom на чипе cypress включена в драйвер cypress_m8 в ядре 2.6.25 8)

quick
Posts: 5
Joined: 18:12, 18 Oct 2007
Contact:

Re:

#9 Post by quick » 14:26, 26 May 2008

jakshi wrote:Хорошая новость.
Поддержка com to usb hid для ups powercom на чипе cypress включена в драйвер cypress_m8 в ядре 2.6.25 8)
Надоело патчить, хотелось из коробки 8)

keshalg
Posts: 7
Joined: 14:49, 15 Jan 2009

Re: Re:

#10 Post by keshalg » 17:22, 15 Jan 2009

quick wrote:
jakshi wrote:Хорошая новость.
Поддержка com to usb hid для ups powercom на чипе cypress включена в драйвер cypress_m8 в ядре 2.6.25 8)
Надоело патчить, хотелось из коробки 8)
+1
подскажите, пожалуйста, система FC9 там usbhid вкомпилен в ядро, это получается, что мне надо его выносить в модуль, что бы появилось устройство ttyUSB0 ?

lilo0
Posts: 3
Joined: 19:50, 16 Feb 2009

Re: Imperial (USB) + NUT = (new) Linux solution

#11 Post by lilo0 » 11:43, 22 Feb 2009

Всем привет
При использовании NUT и IMP825 у меня возникли некоторые проблемы со стабильностью ответов от упса. На запрос о своём состоянии упс должен возвращать строку из 16 символов, а у меня иногда возвращается меньше (как правило 15). Чтобы выявить причину я написал небольшую программу, которая моделирует ядро NUT. Всем пользователям я предлагаю провести тестирование её и сообщить о результатах.
Итак, если у вас linux и упс powercom imperial (IMP или IMD) с USB-интерфейсом, то
- загрузите исходник
- убедитесь, что у вас есть устройство /dev/ttyUSB? создаваемое модулем cypress_m8
- скорректируйте имя устройства в исходнике, если это не ttyUSB0
- скомпилируйте gcc -o test test.c
- убедитесь, что устройство свободно (остановите NUT если он запущен)
- запустите тест от рута с параметром - количеством секунд. например, test 3600 (на час)

Я рекомендую тестировать не менее часа.
Сообщайте модель упса, версию ядра, и 2 предпоследних строки теста (с Total)
Результаты помогут мне понять причину нестабильной работы. Это может быть: аппаратная особенность моего упса, моей модели, всей серии, ошибки модуля ядра, некорректная конфигурация ядра/системы, ещё что-нибудь.
Всем заранее спасибо!

PS: вложения почему-то не работают, ссылка
http://letitbit.net/download/52f90b1074 ... .c.gz.html

keshalg
Posts: 7
Joined: 14:49, 15 Jan 2009

Re: Imperial (USB) + NUT = (new) Linux solution

#12 Post by keshalg » 12:39, 22 Feb 2009

у меня упорно нет /dev/ttyUSB0,
в dmesg:

Code: Select all

hiddev96hidraw0: USB HID v1.00 Device [POWERCOM CO., LTD. USB to Serial] on usb-0000:00:02.0-1
в конфиге ядра:

Code: Select all

CONFIG_HID_SUPPORT=y
CONFIG_HID=y
CONFIG_HID_DEBUG=y
CONFIG_HIDRAW=y
выносить их в модуль? что бы драйвер cypress_m8 подхватывал упс?

lilo0
Posts: 3
Joined: 19:50, 16 Feb 2009

Re: Imperial (USB) + NUT = (new) Linux solution

#13 Post by lilo0 » 13:03, 22 Feb 2009

keshalg wrote:у меня упорно нет /dev/ttyUSB0,
в dmesg:

Code: Select all

hiddev96hidraw0: USB HID v1.00 Device [POWERCOM CO., LTD. USB to Serial] on usb-0000:00:02.0-1
в конфиге ядра:

Code: Select all

CONFIG_HID_SUPPORT=y
CONFIG_HID=y
CONFIG_HID_DEBUG=y
CONFIG_HIDRAW=y
выносить их в модуль? что бы драйвер cypress_m8 подхватывал упс?
если нет других usb-устройств hid (мышки) можно вообще убрать поддержку hid из ядра, если есть - то в модуль, и грузить cypress первым

lilo0
Posts: 3
Joined: 19:50, 16 Feb 2009

Re: Imperial (USB) + NUT = (new) Linux solution

#14 Post by lilo0 » 17:37, 04 Mar 2009

Вот новая ссылка на исходник (не на letitbit)
http://lilo0.nm.ru/test.c.gz

smdmitry
Posts: 1
Joined: 14:28, 05 Jul 2009

Re: Imperial (USB) + NUT = (new) Linux solution

#15 Post by smdmitry » 14:50, 05 Jul 2009

У меня не стартует upsd =(

У меня Ubuntu Server: Linux server 2.6.27-11-server #1 SMP Wed Apr 1 21:34:13 UTC 2009 x86_64 GNU/Linux
lsusb: Bus 001 Device 007: ID 0d9f:0002 Powercom Co., Ltd

Модуль usbhid я отключил, теперь cypress_m8 подхватывает UPS и создает /dev/ttyUSB0.

Ваш драйвер powercom скопировал в /sbin/ и в /lib/nut/.

Страртую ваш драйвер: sudo /lib/nut/powercom -a ups -u root -DD -x type=IMPERIAL -x port=/dev/ttyUSB0

Code: Select all

Network UPS Tools - PowerCom and similars protocol UPS driver $ Revision: 0.6 $ (2.0.5)

debug level is '2'
Values of arguments:
 manufacturer            : 'PowerCom'
 model name              : 'Unknown'
 serial number           : 'Unknown'
 line voltage            : '230'
 type                    : 'IMPERIAL'
 number of bytes from UPS: '16'
 method of flow control  : 'dtr0rts1'
 validation sequence: '{{5,0xff},{7,0},{8,0}}'
 shutdown arguments: '{{0,10},n}'
 frequency calculation coefficients: '{1.000000,1.000000}'
 load percentage calculation coefficients: '{1.000000,0.000000,1.000000,0.000000}'
 battery percentage calculation coefficients: '{0.000000,1.000000,0.000000,1.000000,0.000000}'
 voltage calculation coefficients: '{2.000000,0.000000}'
Flow control disable
input.frequency: 50.00
output.frequency: 50.00
ups.load: 21.0
battery.charge: 100.0
input.voltage: 216.0
output.voltage: 216.0
STATUS: OL
dstate_init: sock /var/lib/nut/ups open on fd 5
input.frequency: 50.00
output.frequency: 50.00
ups.load: 21.0
battery.charge: 100.0
input.voltage: 216.0
output.voltage: 216.0
STATUS: OL
input.frequency: 50.00
output.frequency: 50.00
ups.load: 22.0
battery.charge: 100.0
input.voltage: 214.0
output.voltage: 214.0
STATUS: OL
Он работает. Также test.c за всю ночь ни одной ошибки в коммуникации с UPS не нашел.

Теперь пытаюсь запустить upsd: sudo upsd -DDDD

Code: Select all

Network UPS Tools upsd 2.2.2
listen_add: added 0.0.0.0:3493
setuptcp: try to bind to 0.0.0.0 port 3493
listening on 0.0.0.0 port 3493
/var/run/nut is world readable
Can't connect to UPS [ups] (powercom-ups): No such file or directory
sstate_dead: connection to driver socket for UPS [ups] lost
sstate_dead: connection to driver socket for UPS [ups] lost
Убиваю ранее запущенный /sbin/powercom. Стартую его же через: sudo upsdrvctl -DDDD start

Code: Select all

Network UPS Tools - UPS driver controller 2.2.2
Starting UPS: ups
exec: /lib/nut/powercom -a ups
Network UPS Tools - PowerCom and similars protocol UPS driver $ Revision: 0.6 $ (2.0.5)
Замечаю что: sudo upsdrvctl -DDDD stop - не может его убить.

Code: Select all

Network UPS Tools - UPS driver controller 2.2.2
Stopping UPS: ups
Can't open /var/run/nut/powercom-ttyUSB0.pid: No such file or directory
ps axf | grep ups

Code: Select all

23364 ttyp2    S+     0:00              \_ grep ups
22984 ?        Ss     0:00 /lib/nut/powercom -a ups
Черт с ним, может upsd теперь запуститься.

Пытаюсь запустить upsd: sudo upsd -DDDD, но нет, все также не может соединиться =(

Все действие пробовал повторить прямо из консоли root'a - не может =(

Аттачи не работают у вас. Файлы конфига тут: http://smdmitry.ru/share/nut.rar

Что делать-то, чтобы заработало?

Post Reply