All-
It seems that something about the combination of FreeBSD 8.1 and
apcupsd connecting to an APC Back-UPS RS 1500.
Here's what I've got:
1. FreeBSD 8.1 (source compiled up to RELENG_8_1 for security fixes)
2. apcupsd 3.14.8 compiled from FreeBSD Ports
3. APC Back-UPS RS 1500
This was working fine in FreeBSD 8.0, but it appears to be broken with
FreeBSD 8.1. I've done a little debugging to try to figure out what's
going on and was best I can tell it's not able to communicate at all
with the UPS.
Here's what I've come up with so far:
# usbconfig list
ugen0.1: <UHCI root HUB Intel> at usbus0, cfg=255 md=HOST spd=FULL
(12Mbps) pwr=ON
ugen1.1: <UHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON
ugen2.1: <UHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON
ugen3.1: <EHCI root HUB Intel> at usbus3, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=ON
ugen4.1: <UHCI root HUB Intel> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON
ugen5.1: <UHCI root HUB Intel> at usbus5, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON
ugen6.1: <UHCI root HUB Intel> at usbus6, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON
ugen7.1: <EHCI root HUB Intel> at usbus7, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=ON
ugen3.2: <Mass Storage Device Prolific Technology Inc.> at usbus3,
cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen1.2: <Back-UPS RS 1500 FW:8.g9 .D USB FW:g9 American Power
Conversion> at usbus1, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON
# usbconfig -d 1.2 dump_info
ugen1.2: <Back-UPS RS 1500 FW:8.g9 .D USB FW:g9 American Power
Conversion> at usbus1, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON
# usbconfig -d 1.2 dump_device_desc
ugen1.2: <Back-UPS RS 1500 FW:8.g9 .D USB FW:g9 American Power
Conversion> at usbus1, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0110
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0008
idVendor = 0x051d
idProduct = 0x0002
bcdDevice = 0x0106
iManufacturer = 0x0003 <American Power Conversion>
iProduct = 0x0001 <Back-UPS RS 1500 FW:8.g9 .D USB FW:g9 >
iSerialNumber = 0x0002 <JB0704015634 >
bNumConfigurations = 0x0001
# truss -o apctest.truss apctest -d 200
2010-09-03 14:23:00 apctest 3.14.8 (16 January 2010) freebsd
Checking configuration ...
0.000 apcupsd: apcconfig.c:799 After config scriptdir:
"/usr/local/etc/apcupsd"
0.000 apcupsd: apcconfig.c:800 After config pwrfailpath: "/var/run"
0.000 apcupsd: apcconfig.c:801 After config nologinpath: "/var/run"
0.000 apcupsd: newups.c:102 write_lock at drivers.c:208
0.000 apcupsd: drivers.c:210 Looking for driver: usb
0.000 apcupsd: drivers.c:214 Driver apcsmart is configured.
0.000 apcupsd: drivers.c:214 Driver net is configured.
0.000 apcupsd: drivers.c:214 Driver usb is configured.
0.000 apcupsd: drivers.c:217 Driver usb found and attached.
0.000 apcupsd: newups.c:108 write_unlock at drivers.c:234
0.000 apcupsd: drivers.c:236 Driver ptr=0x8064e60
Attached to driver: usb
sharenet.type = DISABLE
cable.type = USB_CABLE
You are using a USB cable type, so I'm entering USB test mode
mode.type = USB_UPS
Setting up the port ...
usb_set_debug: Setting debugging level to 2 (on)
0.000 apcupsd: newups.c:102 write_lock at generic-usb.c:614
0.000 apcupsd: generic-usb.c:398 Initializing libusb
0.001 apcupsd: generic-usb.c:403 Found 0 USB busses
0.002 apcupsd: generic-usb.c:405 Found 0 USB devices
0.002 apcupsd: newups.c:108 write_unlock at generic-usb.c:633
apctest FATAL ERROR in generic-usb.c at line 636
Cannot find UPS device --
For a link to detailed USB trouble shooting information,
please see <http://www.apcupsd.com/support.html>.
0.002 apcupsd: newups.c:102 write_lock at generic-usb.c:656
0.002 apcupsd: newups.c:108 write_unlock at generic-usb.c:663
apctest error termination completed
This is what I think the issue is:
# grep '/dev' apctest.truss
open("/dev/usb0",O_RDWR,00) ERR#2 'No such
file
or directory'
open("/dev/usb1",O_RDWR,00) ERR#2 'No such
file
or directory'
open("/dev/usb2",O_RDWR,00) ERR#2 'No such
file
or directory'
open("/dev/usb3",O_RDWR,00) ERR#2 'No such
file
or directory'
open("/dev/usb4",O_RDWR,00) ERR#2 'No such
file
or directory'
open("/dev/usb5",O_RDWR,00) ERR#2 'No such
file
or directory'
open("/dev/usb6",O_RDWR,00) ERR#2 'No such
file
or directory'
open("/dev/usb7",O_RDWR,00) ERR#2 'No such
file
or directory'
open("/dev/usb8",O_RDWR,00) ERR#2 'No such
file
or directory'
open("/dev/usb9",O_RDWR,00) ERR#2 'No such
file
or directory'
FreeBSD's USB stack no longer appears to generate the '/dev/usb#'
entries. I tried symlinking the appropriate 'ugen' to 'usb0',
but this
didn't help either.
# ln -s /dev/ugen1.2 /dev/usb0
# apctest -d 200
2010-09-03 14:29:04 apctest 3.14.8 (16 January 2010) freebsd
Checking configuration ...
0.000 apcupsd: apcconfig.c:799 After config scriptdir:
"/usr/local/etc/apcupsd"
0.000 apcupsd: apcconfig.c:800 After config pwrfailpath: "/var/run"
0.000 apcupsd: apcconfig.c:801 After config nologinpath: "/var/run"
0.000 apcupsd: newups.c:102 write_lock at drivers.c:208
0.000 apcupsd: drivers.c:210 Looking for driver: usb
0.000 apcupsd: drivers.c:214 Driver apcsmart is configured.
0.000 apcupsd: drivers.c:214 Driver net is configured.
0.000 apcupsd: drivers.c:214 Driver usb is configured.
0.000 apcupsd: drivers.c:217 Driver usb found and attached.
0.000 apcupsd: newups.c:108 write_unlock at drivers.c:234
0.000 apcupsd: drivers.c:236 Driver ptr=0x8064e60
Attached to driver: usb
sharenet.type = DISABLE
cable.type = USB_CABLE
You are using a USB cable type, so I'm entering USB test mode
mode.type = USB_UPS
Setting up the port ...
usb_set_debug: Setting debugging level to 2 (on)
0.000 apcupsd: newups.c:102 write_lock at generic-usb.c:614
0.001 apcupsd: generic-usb.c:398 Initializing libusb
usb_os_find_busses: Found /dev/usb0
0.002 apcupsd: generic-usb.c:403 Found 1 USB busses
0.004 apcupsd: generic-usb.c:405 Found 0 USB devices
0.004 apcupsd: newups.c:108 write_unlock at generic-usb.c:633
apctest FATAL ERROR in generic-usb.c at line 636
Cannot find UPS device --
For a link to detailed USB trouble shooting information,
please see <http://www.apcupsd.com/support.html>.
0.004 apcupsd: newups.c:102 write_lock at generic-usb.c:656
0.004 apcupsd: newups.c:108 write_unlock at generic-usb.c:663
apctest error termination completed
Okay. Extremely lengthy email, but if anybody can help me with this
it'd be much appreicated.
Cheers,
Ben