[Nut-upsuser] UPS/NUT with openSUSE 13.1

Rob Groner rgroner at RTD.com
Wed Sep 16 15:46:00 UTC 2015


I found something particularly strange while trying out different things:

I started up upsdrvctl, upsd, and upsmon.  I then stopped upsdrvctl, and tried starting the usbhid-ups driver a few times.

Each time I executed the driver, it indicated an instance was already running, stopped it, and then started it again....which is what it should do.

I then added -DDDD to the command....and then it failed, giving me the same "Can't claim USB" message.  Why does adding the debug commands cause a problem?  It seems like it would either be timing related (extra time taken by outputting debug messages) or the debug flags are actually affecting execution.

--------------------------------------------------
linux-86h4:/usr/local/ups/bin # ./usbhid-ups -u root -a rtdups            
Network UPS Tools - Generic HID driver 0.39 (2.7.2.6_RTD)
USB communication driver 0.32
Duplicate driver instance detected! Terminating other driver!
                                                                               
Broadcast message from rtd at linux-86h4 (somewhere) (Wed Sep 16 11:33:10 2015):  
                                                                               
Communications with UPS rtdups at localhost lost                                  
                                                                               
Using subdriver: RTD UPS HID v1.0
                                                                               
Broadcast message from rtd at linux-86h4 (somewhere) (Wed Sep 16 11:33:20 2015):  
                                                                               
Communications with UPS rtdups at localhost established                           
                                                                               

linux-86h4:/usr/local/ups/bin # ./usbhid-ups -u root -DDDD -a rtdups
Network UPS Tools - Generic HID driver 0.39 (2.7.2.6_RTD)
USB communication driver 0.32
   0.000000     debug level is '4'
   0.000457     upsdrv_initups...
   0.004206     Checking device (0930/6545) (002/002)
   0.008192     - VendorID: 0930
   0.008226     - ProductID: 6545
   0.008242     - Manufacturer: Kingston
   0.008257     - Product: DT 101 G2
   0.008274     - Serial Number: 00137297189CEB80F59301A9
   0.008290     - Bus: 002
   0.008305     Trying to match device
   0.008326     Device does not match - skipping
   0.008365     Checking device (1D6B/0002) (002/001)
   0.008527     - VendorID: 1d6b
   0.008547     - ProductID: 0002
   0.008563     - Manufacturer: Linux 3.16.6-2-desktop ehci_hcd
   0.008579     - Product: EHCI Host Controller
   0.008594     - Serial Number: 0000:00:1d.7
   0.008610     - Bus: 002
   0.008625     Trying to match device
   0.008642     Device does not match - skipping
   0.008667     Checking device (1D6B/0001) (008/001)
   0.029283     - VendorID: 1d6b
   0.029391     - ProductID: 0001
   0.029408     - Manufacturer: Linux 3.16.6-2-desktop uhci_hcd
   0.029716     - Product: UHCI Host Controller
   0.029734     - Serial Number: 0000:00:1d.2
   0.029750     - Bus: 008
   0.029766     Trying to match device
   0.029788     Device does not match - skipping
   0.029857     Checking device (1D6B/0001) (007/001)
   0.050377     - VendorID: 1d6b
   0.050403     - ProductID: 0001
   0.050425     - Manufacturer: Linux 3.16.6-2-desktop uhci_hcd
   0.050438     - Product: UHCI Host Controller
   0.050452     - Serial Number: 0000:00:1d.1
   0.050465     - Bus: 007
   0.050478     Trying to match device
   0.050496     Device does not match - skipping
   0.050547     Checking device (1D6B/0001) (006/001)
   0.071634     - VendorID: 1d6b
   0.071652     - ProductID: 0001
   0.071657     - Manufacturer: Linux 3.16.6-2-desktop uhci_hcd
   0.071662     - Product: UHCI Host Controller
   0.071668     - Serial Number: 0000:00:1d.0
   0.071673     - Bus: 006
   0.071677     Trying to match device
   0.071687     Device does not match - skipping
   0.071741     Checking device (2A37/5110) (001/005)
   0.073249     - VendorID: 2a37
   0.073262     - ProductID: 5110
   0.073268     - Manufacturer: RTD Embedded Technologies, Inc.
   0.073274     - Product: UPS25110
   0.073279     - Serial Number: 123456789ABC
   0.073285     - Bus: 001
   0.073290     Trying to match device
   0.073299     Device matches
   0.073326     failed to claim USB device: Device or resource busy
   0.073338     failed to detach kernel driver from USB device: No such file or directory
   0.073347     failed to claim USB device: Device or resource busy
   0.073360     failed to detach kernel driver from USB device: No such file or directory
   0.073372     failed to claim USB device: Device or resource busy
   0.073379     failed to detach kernel driver from USB device: No such file or directory
   0.073386     failed to claim USB device: Device or resource busy
   0.073393     failed to detach kernel driver from USB device: No such file or directory
   0.073400     Can't claim USB device [2a37:5110]: No such file or directory
------------------------------------------

Rob Groner
Software Engineer Level II

RTD Embedded Technologies, Inc.
ISO 9001 and AS9100 Certified
Ph: +1 814-234-8087
www.rtd.com

-----Original Message-----
From: Charles Lepple [mailto:clepple at gmail.com] 
Sent: Tuesday, September 15, 2015 9:32 PM
To: Rob Groner <rgroner at RTD.com>
Cc: Roger Price <roger at rogerprice.org>; nut-upsuser Mailing List <nut-upsuser at lists.alioth.debian.org>
Subject: Re: [Nut-upsuser] UPS/NUT with openSUSE 13.1

On Sep 15, 2015, at 5:12 PM, Rob Groner <rgroner at RTD.com> wrote:
> 
> Charles,
>  
> Trying to track down the source of the problem, I checked Yast to make sure I had at least 0.1.8 version for libusb.  I saw this (attached photo).  Is it then actually using –compat instead of the “real” libusb?  And is that a problem?

You're right, both the -compat and real libusb packages will use the same libusb-0.1.so* name.

It's not necessarily a problem, but it does mean that there is different code between your driver and the kernel. Most of the NUT testing has been done with the original libusb.

> I just thought of something else that has changed since the last time I was trying this....  I am now using the "--with-pidpath=/var/run/ups" configuration parameter to change where everything keeps the pid files.  I wasn't doing that before.  Since that's mounted to tmpfs, is it possible that's getting unmounted before the shutdown command happens (and thus not finding the .pid file, it tries to start it instead)?

You might be on to something, but if so, the race happens earlier than the "usbhid-ups -k" invocation. Because the "-k" flag is meant to be called at the end of the shutdown sequence, it doesn't assume /var is mounted, and consequently, it doesn't check for other PID files. However, if a driver happens to still be running, it could cause the "-k" option to report a busy error.

https://github.com/networkupstools/nut/blob/master/drivers/main.c#L588

-- 
Charles Lepple
clepple at gmail





More information about the Nut-upsuser mailing list