Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F156746523
D26259.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D26259.diff
View Options
Index: head/sysutils/apcupsd/Makefile
===================================================================
--- head/sysutils/apcupsd/Makefile
+++ head/sysutils/apcupsd/Makefile
@@ -3,7 +3,7 @@
PORTNAME= apcupsd
PORTVERSION= 3.14.14
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= sysutils
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}%20-%20Stable/${PORTVERSION}
@@ -31,7 +31,7 @@
OPTIONS_DEFINE= APCDUMB_DRV APCSMART_DRV CGI CLIENT_ONLY GAPCMON MODBUS \
MODBUS_USB PCNET_DRV SHUTDOWN_POWEROFF SNMP_DRV SNMP_DRV_OLD \
- TCP_WRAPPERS TEST_DRV USB_DRV
+ TCP_WRAPPERS TEST_DRV USB_DRV USB_REPORTING
OPTIONS_DEFAULT= APCDUMB_DRV APCSMART_DRV MODBUS MODBUS_USB PCNET_DRV \
SNMP_DRV TCP_WRAPPERS USB_DRV
OPTIONS_SUB= yes
@@ -50,6 +50,7 @@
TCP_WRAPPERS_DESC= ${LIBWRAP_DESC}
TEST_DRV_DESC= Test driver support
USB_DRV_DESC= USB driver support
+USB_REPORTING_DESC= Experimental patch for faulty USB reporting
APCDUMB_DRV_CONFIGURE_ENABLE= dumb
APCSMART_DRV_CONFIGURE_ENABLE= apcsmart
@@ -74,6 +75,8 @@
TCP_WRAPPERS_CONFIGURE_WITH= libwrap=yes
TEST_DRV_CONFIGURE_ENABLE= test
USB_DRV_CONFIGURE_ENABLE= usb
+
+USB_REPORTING_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-usb-reporting
.include <bsd.port.options.mk>
Index: head/sysutils/apcupsd/files/extra-patch-usb-reporting
===================================================================
--- head/sysutils/apcupsd/files/extra-patch-usb-reporting
+++ head/sysutils/apcupsd/files/extra-patch-usb-reporting
@@ -0,0 +1,51 @@
+--- include/HidUps.h.orig 2015-02-08 18:00:05 UTC
++++ include/HidUps.h
+@@ -107,6 +107,7 @@ class HidUps (private)
+ /* Fetch a descriptor from an interface (as opposed to from the device) */
+ int GetIntfDescr(
+ unsigned char type, unsigned char index, void *buf, int size);
++ int GetIntfDescrLength(unsigned char index);
+
+ bool init_device(struct usb_device *dev, const char *serno);
+
+--- src/libusbhid/HidUps.cpp.orig 2015-02-08 18:00:05 UTC
++++ src/libusbhid/HidUps.cpp
+@@ -244,6 +244,26 @@ int HidUps::GetIntfDescr(
+ (type << 8) + index, 0, (char*)buf, size, 1000);
+ }
+
++/* Get the interface descriptor's length */
++int HidUps::GetIntfDescrLength(unsigned char index)
++{
++ /* usb_hid_descriptor */
++ char buf[9];
++ memset(buf, 0, sizeof(buf));
++ int ret = usb_control_msg(_fd, USB_ENDPOINT_IN | USB_RECIP_INTERFACE,
++ USB_REQ_GET_DESCRIPTOR,
++ (USB_DT_HID << 8) + index, 0, (char*)buf, sizeof(buf), 1000);
++
++ int len = MAX_SANE_DESCRIPTOR_LEN;
++ if (ret >= 0) {
++ /* wDescriptorLength */
++ int desclen = buf[7] | (buf[8] << 8);
++ if (desclen > 0)
++ len = desclen;
++ }
++ return len;
++}
++
+ /*
+ * Fetch the report descriptor from the device given an _fd for the
+ * device's control endpoint. Descriptor length is written to the
+@@ -255,8 +275,9 @@ unsigned char *HidUps::FetchReportDescr(int *rlen)
+ unsigned char *ptr;
+ int rdesclen;
+
+- ptr = (unsigned char*)malloc(MAX_SANE_DESCRIPTOR_LEN);
+- rdesclen = GetIntfDescr(USB_DT_REPORT, 0, ptr, MAX_SANE_DESCRIPTOR_LEN);
++ int desclen = GetIntfDescrLength(0);
++ ptr = (unsigned char*)malloc(desclen);
++ rdesclen = GetIntfDescr(USB_DT_REPORT, 0, ptr, desclen);
+ if (rdesclen <= 0) {
+ Dmsg(100, "Unable to get REPORT descriptor (%d).\n", rdesclen);
+ free(ptr);
Index: head/sysutils/apcupsd/files/pkg-message.in
===================================================================
--- head/sysutils/apcupsd/files/pkg-message.in
+++ head/sysutils/apcupsd/files/pkg-message.in
@@ -18,6 +18,10 @@
Please, read its man page, and if this is not the intended behavior you want,
change it accordingly.
+If connected via USB and apcaccess reports incomplete data consider enabling
+the USB_REPORTING options via 'make config'. This contains an experimental
+patch that may fix some USB attach APC UPS. PR #249041
+
In some systems where the shutdown can take a while (like in bhyve environment),
you may want to change this behavior as follows:
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, May 17, 2:05 AM (12 m, 50 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33166830
Default Alt Text
D26259.diff (4 KB)
Attached To
Mode
D26259: sysutils/apcupsd: Add patch to fix APC BE600M1 reporting
Attached
Detach File
Event Timeline
Log In to Comment