Comments (11)
So, this bit of mystery is solved: the script behind those files only generates entries for upower-hid
database for known USB/HID device drivers, not for all USB-capable NUT drivers:
https://github.com/networkupstools/nut/blame/76045f9a0217e881996a0c67281966ca4ff7fe70/tools/nut-usbinfo.pl#L235-L247
@aquette : WDYT, is this assumption still relevant? Is there some other database for "USB non-HID" devices for these platforms, or should we better make one in similar fashion?
from nut.
Thanks for the report, the part about unknown keywords looks related to #1763 which should fix this issue, but was merged after NUT v2.8.0 release - should be in 2.8.1 (or custom builds of current master).
The "Access denied" part may be due to lack of 04b4
in udev
rules, upower-hid
and similar mappings (whichever applies to your distro), which tell the kernel that certain vendor/product IDs should be handed off to nut
run-time user. For some reason, this ID did not show up in such files (also on current master), so the kernel keeps owning the devfs node. As a quick fix, try adding user=root
to the ups.conf
section, so the driver would not drop privileges and remain able to open the device node - if that is all there is to this problem.
I'll check why it does not get listed, though.
from nut.
So... it does appear in many of the files, e.g.:
nut$ grep -ri 04b4 .
./drivers/riello_usb.c:#define RIELLO_VENDORID 0x04b4
./scripts/hotplug/libhid.usermap:libhidups 0x0003 0x04b4 0x5500 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
./scripts/devd/nut-usb.quirks:hw.usb.quirk.22="0x04b4 0x5500 0x0000 0xffff UQ_HID_IGNORE"
./scripts/devd/nut-usb.conf: match "vendor" "0x04b4";
./scripts/devd/nut-usb.conf.in: match "vendor" "0x04b4";
./scripts/Solaris/nut-usb-driver.p5m.include.in: alias="usb04b4,5500.*" \
./scripts/Solaris/nut-usb-driver.p5m.include: alias="usb04b4,5500.*" \
./scripts/udev/smartnut-usbups.rules.in:ATTR{idVendor}=="04b4", ATTR{idProduct}=="5500", MODE="664", GROUP="@RUN_AS_GROUP@", RUN+="FIXME...nutdrvctl...FIXME"
./scripts/udev/nut-usbups.rules.in:ATTR{idVendor}=="04b4", ATTR{idProduct}=="5500", MODE="664", GROUP="@RUN_AS_GROUP@"
./scripts/udev/smartnut-usbups.rules:ATTR{idVendor}=="04b4", ATTR{idProduct}=="5500", MODE="664", GROUP="nogroup", RUN+="FIXME...nutdrvctl...FIXME"
./scripts/udev/62-nut-usbups.rules:ATTR{idVendor}=="04b4", ATTR{idProduct}=="5500", MODE="664", GROUP="nogroup"
./scripts/udev/nut-usbups.rules:ATTR{idVendor}=="04b4", ATTR{idProduct}=="5500", MODE="664", GROUP="nogroup"
./tools/nut-scanner/nutscan-usb.h: { 0x04b4, 0x5500, "riello_usb", NULL },
(NOTE: nogroup
should not appear in production builds/packages; this example is from a minimally configured dev build)
But not in ./scripts/upower/95-upower-hid.hwdb
:\
In system-installed area on a Debian-derived machine I see /usr/lib/udev/rules.d/62-nut-usbups.rules and it does have 04b4
.
from nut.
As a quick fix, try adding
user=root
to theups.conf
section, so the driver would not drop privileges and remain able to open the device node - if that is all there is to this problem.
If it can help, with user=root I get
$ sudo riello_usb -a riellonpw1000 -DD
Network UPS Tools - Riello USB driver 0.07 (2.8.0)
Warning: This is an experimental driver.
Some features may not function correctly.
(...)
0.235611 [D2] Checking device 9 of 18 (04B4/5500)
0.246993 [D2] - VendorID: 04b4
0.247018 [D2] - ProductID: 5500
0.247026 [D2] - Manufacturer: Cypress Semiconductor
0.247033 [D2] - Product: USB to Serial
0.247047 [D2] - Serial Number: unknown
0.247055 [D2] - Bus: 003
0.247062 [D2] - Device: unknown
0.247068 [D2] - Device release number: 0000
0.247074 [D2] Trying to match device
0.247083 [D2] Device matches
0.247089 [D2] Reading first configuration descriptor
0.247105 [D2] successfully set kernel driver auto-detach flag
0.247459 [D2] Claimed interface 0 successfully
0.249974 [D2] HID descriptor length 37
0.252987 [D2] Report descriptor retrieved (Reportlen = 37)
0.253003 [D2] Found HID device
0.253025 [D2] entering start_ups_comm()
1.102403 [D2] Communication with UPS established
1.662625 [D1] countlost 0
2.334367 [D1] get_ups_status() 0
2.798588 [D2] dstate_init: sock /run/nut/riello_usb-riellonpw1000 open on fd 9
2.798800 [D1] Group and/or user account for this driver was customized ('root:dialout') compared to built-in defaults. Fixing socket '/run/nut/riello_usb-riellonpw1000' ownership/access.
2.799287 [D1] Group access for this driver successfully fixed
2.799297 [D1] countlost 0
3.470590 [D1] get_ups_status() 0
4.800281 [D1] countlost 0
5.470467 [D1] get_ups_status() 0
And then it continues looping
[D1] get_ups_status() 0
[D1] countlost 0
from nut.
To see if it gets data, try a "dumping mode" to print what it saw after a few (e.g. 1
) loops in a way similar to upsc
client reports, and exit. Also it generally might help to bump debug verbosity for the exploratory run, but looking at code the two repeating lines in this case mean it succeeded to get_ups_status()
and overall had zero failed attempts to get a reading.
Mixing the two suggestions:
sudo riello_usb -a riellonpw1000 -DDDDDD -d1
from nut.
Ultimately, if it does report UPS data here, then the whole stack running as services is also expected to behave well.
from nut.
sudo riello_usb -a riellonpw1000 -DDDDDD -d1
0.234560 [D2] Checking device 9 of 18 (04B4/5500)
0.245526 [D2] - VendorID: 04b4
0.245543 [D2] - ProductID: 5500
0.245549 [D2] - Manufacturer: Cypress Semiconductor
0.245555 [D2] - Product: USB to Serial
0.245563 [D2] - Serial Number: unknown
0.245571 [D2] - Bus: 003
0.245577 [D2] - Device: unknown
0.245583 [D2] - Device release number: 0000
0.245589 [D2] Trying to match device
0.245595 [D3] match_function_regex: matching a device...
0.245603 [D2] Device matches
0.245610 [D2] Reading first configuration descriptor
0.245623 [D3] libusb_kernel_driver_active() returned 0
0.245650 [D2] Claimed interface 0 successfully
0.245659 [D3] nut_usb_set_altinterface: skipped libusb_set_interface_alt_setting(udev, 0, 0)
0.248524 [D3] HID descriptor, method 1: (9 bytes) => 09 21 00 01 00 01 22 25 00
0.248531 [D3] HID descriptor length (method 1) 37
0.248537 [D4] i=0, extra[i]=09, extra[i+1]=21
0.248544 [D3] HID descriptor, method 2: (9 bytes) => 09 21 00 01 00 01 22 25 00
0.248551 [D3] HID descriptor length (method 2) 37
0.248558 [D2] HID descriptor length 37
0.251526 [D2] Report descriptor retrieved (Reportlen = 37)
0.251534 [D2] Found HID device
0.251547 [D5] send_to_all: SETINFO ups.vendorid "04b4"
0.251555 [D5] send_to_all: SETINFO ups.productid "5500"
0.251566 [D5] send_to_all: SETINFO driver.version "2.8.0"
0.251573 [D5] send_to_all: SETINFO driver.version.internal "0.07"
0.251581 [D5] send_to_all: SETINFO driver.name "riello_usb"
0.251587 [D2] entering start_ups_comm()
0.254527 [D3] send: features report ok
0.667141 [D3] send ok
0.674927 [D3] read: FFFFFFF0 00 00 00 00 00 00 00
0.690854 [D3] read: FFFFFFF7 02 22 20 15 33 30 30
0.690869 [D5] Header detected: LAST_DATA:0,0,0,0,2,22 buf_ptr:0
0.706852 [D3] read: FFFFFFF5 30 30 3E 3A 03 00 00
0.706865 [D5]
End detected: LAST_DATA:30,30,30,3E,3A,3 buf_ptr:12
0.716935 [D3] in read: 12
0.716946 [D3] riello_command ok: 12
0.716954 [D3] Get identif Ko: command not supported
0.716963 Bad checksum or NACK
from nut.
CC @mzampieri70 : Cheers, would you have any ideas about this, please?
from nut.
Hi this seems a NAK problem on the USB communication, please try to isolate the USB cable from the mains cable as first stage.
Regards.
from nut.
try to isolate the USB cable from the mains cable
The USB cable already follows a different path from the AC/power cables
from nut.
@d1nuc0m : just in case, is this a shielded USB cable (foiled in the cover - so grounds of the devices match and EMI does not pass), or can you try such a cable? Maybe it can help to just unplug-replug a few times in case the (non-gilded) connectors got oxidized - this would scratch the film off and improve the signal-to-noise ratio for a while...
from nut.
Related Issues (20)
- `ups.status` reports `OB` several times (NUT v2.8.0/.1 at least)
- Implement missing WIN32 bits for `nutconf` (library, test and tool)
- Support new NUT vocabulary in `nutconf` HOT 1
- Avoid `tmpnam()` in `nutconf`
- Issue - stoping working with 2 similar Eaton HOT 2
- is it supported? Network UPS Tools upsstats 2.8.0 - energenie - [error: Driver not connected] on myups2@localhost HOT 1
- A great new way to display NUT data
- Beeper status is muted instead of enabled when beeper is working HOT 2
- Add support for AEG UPS Protect D series, like model D3000, using USB connection HOT 20
- SNMP: delta_ups-mib.c: is "splite-phase" a real word? HOT 1
- SNMP: eaton-ups-pwnm2-mib.c: two same numeric IDs in a lookup table HOT 2
- SNMP: raritan-px2-mib.c: string "NULL" instead of a sentinel with a NULL pointer HOT 3
- Fry's Electronic China UPS HOT 8
- Problem with Eaton PW9130 - ConnectedUPS Web/SNMP Card V4.38 HOT 10
- nutdrv_qx: memory leak HOT 8
- Want to update `docs/configure.txt` about developer-oriented options
- CI: `nutconf` tests occasionally fail `NutIPCUnitTest::testSignalSend`
- [HCL] APC Back-UPS NS 1500M2 (BN1500M2-CA) supported by usbhid-ups
- UPS Model "Powerwalker Basic VI 800 STL" not recognized - Driver startup issue HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nut.